【关于SpringBoot的配置文件】
目录
1.在配置文件中配置系统全局的设置,例如tomcat端口号、链接数据库的信息等等。
2.在配置文件中自定义程序猿所要用到的信息,例如密钥信息等。
3.知道了配置文件的基本配置操作,那么如何读取配置文件中的信息呢?
5.读取配置文件方式二:@ConfigurationProperties 读取一个实体类
6.读取配置文件方式二:@ConfigurationProperties 读取一个数据集合
一、Spring Boot中的配置文件有何作用?
1.为系统框架提供数据支持。
2.为程序猿自己去调用。
二、Spring Boot中关于配置文件的操作有哪些?
首先我们要了解,在配置文件中的信息都是以Key-Value的形式存在的。
1.在配置文件中配置系统全局的设置,例如tomcat端口号、链接数据库的信息等等。
![]()

2.在配置文件中自定义程序猿所要用到的信息,例如密钥信息等。

在此我们要知道,如果是程序猿自己配置的信息,那么可以在遵循Key-Value的格式下,定义任何名称的Key。
3.知道了配置文件的基本配置操作,那么如何读取配置文件中的信息呢?

读取配置的方法一:@Value 注解读取单个配置项,此时我们可以重写afterPropertiesSet方法来查看是否读取到了配置文件中的内容,我们知道afterPropertiesSet方法是参数设置完成之后执行的方法,代码如下:

运行程序,控制台信息如下:

4.在我们配置连接数据库的信息时,可以明显的感觉到存在太多冗余信息,那么有没有更好的措施减少冗余信息呢?答案是有的,我们系统默认的配置文件为.properties,我们可以生成一个.yml的配置文件来进行连接数据库的信息配置。

yml语法格式不同于Key-Value格式但又相似于Key-Value格式,具体写法如下:
key: value
注意:冒号后面一定要加空格,否则配置项就不会生效。
5.读取配置文件方式二:@ConfigurationProperties 读取一个实体类
具体分为两步操作:
1.将配置文件中的一组对象映射到某个类上(以Student类为例)


2.使用注入的方式在其他类中注入Student即可

同样的,在afterPropertiesSet方法中打印Student类实例
![]()
结果如下:

总结:具体的步骤为:在配置文件中自定义一个实体类Student,在Model层的Student类中使用@ConfigurationProperties 注解说明需要将配置文件中的哪个实体类映射到当前类当中,注意,需要映射的目标类需要提供Getter和Setter方法,否则就会映射失败,当启动类运行时,就会自动将配置文件中的实体类和目标类完成映射,并且在目标类中添加了@Component注解,即映射完成后会将这个类对象存储到Spring框架中,此时我们在启动类中使用@Autowired注解将这个类对象注入进来,当执行到afterPropertiesSet方法进行打印。
6.关于.yml配置文件的value值的特征说明:
我们通过案例来分析其特征(代码和程序执行结果如图):
①在自定义配置文件application.yml中配置如下配置项
②在启动类中进行配置项的读取
③运行启动类,afterPropertiesSet方法执行结果如下
总结:1.如果是String类型可以不加单引号或者双引号
2.如果加了单引号,运行结果和不加引号的效果是一致的,会自动转义字符串中的特殊符号
3.如果加了双引号,那么字符串中的特殊字符是不会转义的,会按照语义正确执行,比如\n 会执行为换行。
6.读取配置文件方式二:@ConfigurationProperties 读取一个数据集合
该操作类似于读取实体类,也分为两步,过程也是类似的:
1.配置文件中的数据集合映射到具体类当中


2.进行打印
![]()

结果如图:
三:properties VS yml
- properties是以Key-Value的形式配置文件,yml使用的是类似于json格式的树形配置方式,yml层级之间使用换行缩进的方式配置,key和value之间使用“: ”英文冒号+空格的方式设置,并且空格不可省略。
- properties是系统默认自生成的配置文件,也是早期的配置文件格式,但是其配置存在一定的冗余数据,使用yml可以很好的解决数据冗余的问题。
- yml通用性更强,支持多语言,不仅仅支持Java、Go、Python等。
- yml支持更多的数据类型。
- yml格式的配置文件在写的时候更容易出错,而properties虽然写法比较传统和复杂,但可以很好避免出错。
- properties和yml可以同时存在于一个项目中,但是假设properties和yml中同时配置了相同的配置项,即对同一个key进行了配置,则只有properties中的配置项生效,而yml中的不会生效,因此,为了避免这个问题,我们最好建议一个项目中使用统一的配置文件类型。
四:Spring Boot中读取配置文件的方式
前两种为我们常用的方式,上面已经描述过了,这里不再进行描述,后三种为不常用的方式,这里仅通过例子进行描述,了解即可,第五种读取方式比较麻烦,是很不推荐的做法,这里不再展示。
-
@Value
-
@ConfigurationProperties
-
Environment
-
@PropertySource
-
使用原生方式读取配置文件
Environment:
使用@Autowired注解
执行结果:
@PropertySource:
创建一个新的properties配置文件(dev.properties):
在启动类前加上@PropertySource注解,指定读取那个properties配置文件以及编码格式:
使用@Value获取配置项,并将配置项进行打印:
执行结果:
总结说明:@PropertySource默认只能读取.properties文件而不能读取.yml文件,如果要读取.yml文件,需要对其中的一些接口进行修改或者重写。@PropertySource注解的用处在于能够指定读取某个.properties文件。








