【JavaEE】Spring Boot - 配置文件

news2024/11/28 14:51:13

【JavaEE】Spring Boot 开发要点总结(2)

在这里插入图片描述

文章目录

  • 【JavaEE】Spring Boot 开发要点总结(2)
    • 1. 配置文件的两种格式
    • 2. .properties 文件
      • 2.1 基本语法
      • 2.2 注释
      • 2.3 配置项
      • 2.4 主动读取配置文件的键值
      • 2.5 数据库的连接时的需要的信息配置
    • 3. .yml文件
      • 3.1 .yml文件的优缺点
      • 3.2 自定义对象
      • 3.3 自定义对象的获取
      • 3.4 配置集合(简单的String类型集合)
    • 4. 其他配置项
    • 5 properties 和 yml的区别
    • 6 补充
      • 6.1 命名
      • 6.2 指定配置文件

【JavaEE】Spring Boot 开发要点总结(2)

所有重要和必要的数据都是在配置文件中配置的

  • 简洁明了,干净利落,修改方便,相比于xml,更有代码的感觉,功能用处也更多更被重视

例如:

  1. 数据库的连接时的需要的信息配置(用户名,url,密码)
  2. 项目的启动端口是什么(server.port)
  3. 第三方系统的调用密钥信息
  4. 用于发现和定位问题的普通日志和异常日志等~

没有配置文件,就无法连接数据库,甚至不能保存日志!

1. 配置文件的两种格式

配置文件的类型有两种:

  1. .properties
  2. .yml
    • .yaml 也一样
    • 这个yaml跟yml是一样的,后面不做演示

在这里插入图片描述

两种最主要的区别就是,格式不同,且对于重复的设置,properties的优先级更高~

  1. propertise

在这里插入图片描述

  1. yml

在这里插入图片描述

结果:

在这里插入图片描述

虽然这两种文件可以共存,但是在实际开发的时候,通常是统一一种配置文件的~

2. .properties 文件

.properties配置文件是最早期的格式,为项目的默认配置文件

而这种写法相对于比较正式,不易出错,整齐全面,适合初学者

  • 之后我们自己的项目,我们写的就是这种 ~

2.1 基本语法

  1. .properties 配置文件是以键值对形式配置的: key=value
  2. .properties,一行一条语句

例如:

server.port=8080
spring.datasource.url=jdbc:mysql:127//127.0.0.1:3306/testdb?charsetEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456

. 代表着层级关系,“的”:X.Y => X里面的Y,对象的用法去联想也可以~

2.2 注释

# 井号代表注释~

在这里插入图片描述

重新启动后,(保存后显示)就会发现注释乱码的问题~

  • 这个时候就需要去设置,改动编码格式都为UTF-8
  • 当然,原本的乱码还会保留,因为已经不可逆了,乱了保存后谁都不认识

在这里插入图片描述

在这里插入图片描述

2.3 配置项

配置文件的配置类型分两种:

  1. 系统配置项
    • 例如:server.port
  2. 用户自定义配置项
    • 想写啥写啥都ok,例如:mine.name=大帅哥
    • 命名参考变量命名~

在这里插入图片描述

对于系统配置项,就是给系统用的,系统在启动的时候会自动获取,然后设置到一些必要的地方,例如端口号…

而对于用户自定义的配置项,则是用户保存的一些键值对罢了,系统不会用到,是用户主动去读取的

  • 当然,系统配置项,也可以被主动读到~

2.4 主动读取配置文件的键值

一样的,在JavaEE进阶,遍地是注解,而这里,仍然有注解可以解决我们的问题~

  • 来自【Spring框架】的@Value 注解

在这里插入图片描述

现在开始的注解,大部分都是“属性注入”的思想,适当联系之前的DI~

  • 对于Bean对象的具体应用细节,后续讲解,这里并不是重点

在这里插入图片描述

  • 猜测含义就是,将key为“mine.name”,注入到字符串name中
  • 并在访问sayHi方法时返回~

在这里插入图片描述

返回了key值~

  • 这种写法跟没写一样~

正确的写法应该是:“${XXX.YYY}”

在这里插入图片描述

效果:

在这里插入图片描述

补充:

  1. 在注入的时候,如果是整数或者浮点型或者布尔类型,则支持字符串转化~
    • 只要不要“fan_jian”的去写,就不会有时,否则直接抛异常
    • 参考平时写代码的赋值操作

在这里插入图片描述

在这里插入图片描述

效果:

在这里插入图片描述

  1. 找不到的时候,会抛异常

在这里插入图片描述

  1. 习惯:在注释内部的字符串最好不要使用小驼峰,而是下划线

在这里插入图片描述

2.5 数据库的连接时的需要的信息配置

在这里插入图片描述

可见写起来比较麻烦

  • 但是这是必须的,因为不止 spring有 datasource,不止 datasource有 url…

  • 至于配置后的细节知识 以及如何操作数据库呢,这是后续的内容,非本文重点~

.properties文件的

  • 优点就是:陈列清晰

  • 缺点就是:写法臃肿

3. .yml文件

3.1 .yml文件的优缺点

优点就是:写法归纳性强,从简,可读性高

缺点:初学者容易犯错, 规矩多~

注意:

在这里插入图片描述

  • 同一层的内容,必须写在一起,归纳在一起(这是规矩)

将.properties的内容转化过来:

在这里插入图片描述

  • 其实也不是很难理解,这样的层级结构就更加鲜明了我觉得~
  • 注意:原本的key=value对应到这里就是,key: value冒号后面的空格不可缺少

效果:

在这里插入图片描述

在这里插入图片描述

其他的优点:

  1. 支持更多的数据类型,它可以简单表达清单(数组),散列表,标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或者编辑数据结构、各种配置文件等
    • properties也差不多吧,只是没有明说,官方夸的天花乱坠~
  2. yml 支持/面向 更多的编程语言,或者说更多的编程语言认可yml
    • 它不止是 Java中可以使用,在 Golang、高版本的 PHP、Python、Ruby、JS、Perl…中也都可以使用
    • 这样,在开发的时候,不同语言的工程师,也可以用统一的配置文件去设置一些共同配置和共同自定义数据
    • 最有价值的优点,不过现在用不着~

3.2 自定义对象

在这里插入图片描述

其实这就是一个对象,yml有明说~

在这里插入图片描述

properties的这个,也是个对象,没有明说~

创建一个实体类:

在这里插入图片描述

在这里插入图片描述

3.3 自定义对象的获取

通过Bean的存储和注入的方式:

  1. 启动的时候,系统识别配置文件,把配置信息赋值给Bean对象
  2. 通过属性注入给成员

识别配置文件,赋值给Bean的方法:

  • 没错还是注解
    在这里插入图片描述

属性注入:

在这里插入图片描述

效果:

在这里插入图片描述

  • 属性名必须跟设置是一样的,否则就是
    1. 多了白多了,没有影响
    2. 少了就少了,显示原有值

在这里插入图片描述

效果:

在这里插入图片描述

  • 不要去把配置文件中的配置改为小驼峰,因为通过注入的时候,配置文件的 key看成全小写,那么原本的属性名就对应不上
    • 这也是前面不写小驼峰的原因之一
  • 导致 isBro 一直是 false

对于properties文件,效果也一样:

在这里插入图片描述

在这里插入图片描述

3.4 配置集合(简单的String类型集合)

在这里插入图片描述

  • 冒号空格别忘了,否则会被认为是字符串的一部分~

这个list也可以看成,db_type对象的一个属性

定义对象的时候,对象名不能用下划线,可以用减号,但是属性名可以:

在这里插入图片描述

所以获取这个自定义数据的方式跟上面一样:

在这里插入图片描述

在这里插入图片描述

效果:

在这里插入图片描述

对于,List<Integer> 等等,那么就要保证每个值都严格对应得上,才不会报错!

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4. 其他配置项

可以参考官方文档:

Common Application Properties (spring.io)

  • 需要用到的时候去搜即可!

在这里插入图片描述

5 properties 和 yml的区别

  1. 语法不同
    • properties : key=value
    • yml : key: value
  2. 诞生时机不同
    • properties是 Java早期的配置文件格式
    • yml不是Java独创的,而是Java兼容yml,yml支持Java
  3. yml很好的解决数据冗余的问题
  4. yml通用性比较高
  5. yml支持更多的数据类型

6 补充

6.1 命名

配置文件的标准名是:application-xxx,从图标就可以看出异端:

在这里插入图片描述

这就是spring的约定,要遵循!

我们有时候开发,要针对不同代码开发环境将配置文件分类

  1. 本地开发环境:application-dev.yml
  2. 测试环境:application-test.yml
  3. 生产环境:application-prod.yml

6.2 指定配置文件

指定配置文件扫描(非系统配置文件 application.yml/application.properties):

在这里插入图片描述

  • 但是这只是提供一个额外的配置文件,优先级不如系统配置文件
  • 这种方式对于普通的properties/yml文件,都适用(包括spring不认可的非application-xxx格式的文件)

在这里插入图片描述

另一种方式:对接环境对应的配置环境

在系统配置文件中去设置:

spring:
	profiles:
		active: xxx
		# xxx 代表开发环境配置文件格式 application-xxx 的 xxx
  • 可见,这种方式就仅仅针对Spring约定的配置文件~

在这里插入图片描述

含义就是,系统配置文件附带这个配置文件(或者说是接上了这个配置文件)

  • 理论上,一次运行只会用到一种开发环境
  • 所以在代码约定上其实系统配置文件只能附带一个自己的配置文件

在这里插入图片描述

在这里插入图片描述

效果:
在这里插入图片描述


文章到此结束!谢谢观看
可以叫我 小马,我可能写的不好或者有错误,但是一起加油鸭🦆

本文代码位置:spring_boot_demo1 · 游离态/马拉圈2023年8月 - 码云 - 开源中国 (gitee.com)


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/843733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面试热题(字符串相加)

给定两个字符串形式的非负整数 num1 和num2 &#xff0c;计算它们的和并同样以字符串形式返回。 你不能使用任何內建的用于处理大整数的库&#xff08;比如 BigInteger&#xff09;&#xff0c; 也不能直接将输入的字符串转换为整数形式。 输入&#xff1a;num1 "11"…

Mermaid系列之FlowChart流程图

一.欢迎来到我的酒馆 介绍mermaid下&#xff0c;Flowchat流程图语法。 目录 一.欢迎来到我的酒馆二.什么是mermiad工具三.在vs code中使用mermaid四.基本语法 二.什么是mermiad工具 2.1 mermaid可以让你使用代码来创建图表和可视化效果。mermaid是一款基于javascript语言的图表…

排序进行曲-v4.0

文章目录 小程一言快速排序步骤详细解释具体步骤 举例总结 复杂度分析时间复杂度分析&#xff1a;空间复杂度分析&#xff1a;注意 应用场景总结 实际举例结果总结 代码实现结果解释 小程一言 这篇文章是在排序进行曲3.0之后的续讲&#xff0c; 这篇文章主要是对快速排序进行细…

二、框架篇

框架篇 Spring 1. 基础核心技术 第1章-Spring的模块与应用场景 第2章-Spring基于XML配置的容器 第3章-Spring基于注解配置的容器 第4章-Spring基于Java配置的容器 第5章-Spring三种配置方式的混合和迁移 第6章-Spring同类型多个Bean的注入 第7章-Spring的Bean生命周期…

Mybatis案例-商品的增删改查

文章目录 1. aim2.环境准备3.查询3.1 查所有3.2 查看详情3.3 条件查询3.3.1 Mybatics如何接收参数&#xff1f;3.3.2 多条件查询3.3.3 动态条件查询3.3.4 单条件查询 4.添加主键返回 5.修改5.1 修改全部字段5.2 修改动态字段 6.删除6.1 删除1个6.2 批量删除 JDBC完成&#xff1…

【0804作业】顺序执行2个线程 (完成逆置打印、拷贝文件) (实现类似cat打印到终端)

作业1&#xff1a; 要求定义一个全局变量 char buf[] "1234567"&#xff0c;创建两个线程&#xff0c;不考虑退出条件 要求定义一个全局变量 char buf[] "1234567"&#xff0c;创建两个线程&#xff0c;不考虑退出条件&#xff0c;另&#xff1a; A线程循…

前端食堂技术周刊第 93 期:7 月登陆 Web 平台的新功能、Node.js 工具箱、Nuxt3 开发技巧、MF 重构方案

美味值&#xff1a;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f;&#x1f31f; 口味&#xff1a;橙橙冰萃美式 食堂技术周刊仓库地址&#xff1a;https://github.com/Geekhyt/weekly 大家好&#xff0c;我是童欧巴。欢迎来到前端食堂技术周刊&#xff0c;我们先来…

第二天 什么是JWT ?

✅作者简介&#xff1a;大家好&#xff0c;我是Cisyam&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Cisyam-Shark的博客 &#x1f49e;当前专栏&#xff1a; 每天一个知识点 ✨特色专…

RocketMQ 主备自动切换模式部署

目录 主备自动切换模式部署 Controller 部署​ Controller 嵌入 NameServer 部署​ Controller 独立部署​ Broker 部署​ 兼容性​ 升级注意事项​ 主备自动切换模式部署 该文档主要介绍如何部署支持自动主从切换的 RocketMQ 集群&#xff0c;其架构如上图所示&#xff…

c++实现Qt信号和槽机制

文章目录 简介信号槽信号与槽的连接 特点观察者模式定义观察者模式结构图 实现简单的信号和槽 简介 信号槽机制与Windows下消息机制类似&#xff0c;消息机制是基于回调函数&#xff0c;Qt中用信号与槽来代替函数指针&#xff0c;使程序更安全简洁。  信号和槽机制是 Qt 的核心…

Scratch 之 大地图引擎怎么做?

引子 简单的介绍一下&#xff0c;一些游戏引擎是有一个隐形小地图存在的&#xff0c;这个隐形小地图通常用来侦测碰碰撞和移动。那么&#xff0c;一个大地图引擎的背景肯定是很大的(一般来说大小都超过200)&#xff0c;如果我们要做出一个枪战作品&#xff0c;那就迟早会发现一…

Spring源码解析(七):bean后置处理器AutowiredAnnotationBeanPostProcessor

Spring源码系列文章 Spring源码解析(一)&#xff1a;环境搭建 Spring源码解析(二)&#xff1a;bean容器的创建、默认后置处理器、扫描包路径bean Spring源码解析(三)&#xff1a;bean容器的刷新 Spring源码解析(四)&#xff1a;单例bean的创建流程 Spring源码解析(五)&…

IBM HR Analytics 员工流失 EDA 和可视化绩效分析

IBM HR Analytics 员工流失与绩效分析 背景导入库输出前五行数据清洗检查空值删除不必要的列 可视化商务旅行直方图离家的距离箱形图教育与数字公司的关系年龄和月收入散点图按教育领域和工作角色划分的工作满意度相关矩阵的交互式热图 背景 揭示导致员工流失的因素&#xff0…

陪诊小程序开发|陪诊系统定制|数字化医疗改善就医条件

健康问题这几年成为人们关注的焦点之一&#xff0c;然而看病却是一个非常麻烦的过程&#xff0c;特别是对于那些身处陌生城市或者不熟悉就医流程的人来说。幸运的是现在有了陪诊小程序下&#xff0c;为您提供便捷的助医服务&#xff0c;使得就医过程得更加简单和轻松。 陪诊系统…

国联易安网页防篡改保护系统“渠道招募”启动啦!

作为业内专注于保密与非密领域的分级保护、等级保护、业务连续性安全和大数据安全的领军企业&#xff0c;国联易安网页防篡改保护系统基于“高效同步”、“安全传输”两项技术&#xff0c;具备了独特的“五重防护”新特性&#xff0c;支持网页的全自动发布、网页监控、报警和自…

webpack基础知识十:与webpack类似的工具还有哪些?区别?

一、模块化工具 模块化是一种处理复杂系统分解为更好的可管理模块的方式 可以用来分割&#xff0c;组织和打包应用。每个模块完成一个特定的子功能&#xff0c;所有的模块按某种方法组装起来&#xff0c;成为一个整体(bundle) 在前端领域中&#xff0c;并非只有webpack这一款…

c51单片机16个按键密码锁源代码(富proteus电路图)

注意了&#xff1a;这个代码你是没法直接运行的&#xff0c;但是如果你看得懂&#xff0c;随便改一改不超过1分钟就可以用 #include "reg51.h" #include "myheader.h" void displayNumber(unsigned char num) {if(num1){P10XFF;P10P11P14P15P160;}else if…

js修改img的src属性显示变换图片到前端页面,img的src属性显示java后台读取返回的本地图片

文章目录 前言一、HTML 图像- 图像标签&#xff08; <img>&#xff09;1.1图像标签的源属性&#xff08;Src&#xff09;1.2图像标签源属性&#xff08;Src&#xff09;显示项目中图片1.3图像标签源属性&#xff08;Src&#xff09;显示网络图片 二、图像标签&#xff08…

韦东山Linux驱动入门实验班(6)LED驱动---设备树

前言 &#xff08;1&#xff09;在韦东山Linux驱动入门实验班&#xff08;5&#xff09;LED驱动—驱动分层和分离&#xff0c;平台总线模型我们已经讲解了如何将驱动程序和硬件程序进行剥离。但是大佬们感觉这样还不行&#xff0c;他们认为要专门弄一个结构存储硬件信息&#x…