【关于SpringBoot的配置文件】

目录

一、Spring Boot中的配置文件有何作用?

二、Spring Boot中关于配置文件的操作有哪些?

1.在配置文件中配置系统全局的设置,例如tomcat端口号、链接数据库的信息等等。

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

3.知道了配置文件的基本配置操作,那么如何读取配置文件中的信息呢?

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

 5.读取配置文件方式二:@ConfigurationProperties 读取一个实体类

 6.关于.yml配置文件的value值的特征说明:

 6.读取配置文件方式二:@ConfigurationProperties 读取一个数据集合

 三:properties VS yml

四:Spring Boot中读取配置文件的方式

@Value

@ConfigurationProperties

Environment

@PropertySource

使用原生方式读取配置文件


一、Spring Boot中的配置文件有何作用?

1.为系统框架提供数据支持。

2.为程序猿自己去调用。

二、Spring Boot中关于配置文件的操作有哪些?

首先我们要了解,在配置文件中的信息都是以Key-Value的形式存在的。

1.在配置文件中配置系统全局的设置,例如tomcat端口号、链接数据库的信息等等。

【关于SpringBoot的配置文件】_第1张图片

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

在此我们要知道,如果是程序猿自己配置的信息,那么可以在遵循Key-Value的格式下,定义任何名称的Key。

3.知道了配置文件的基本配置操作,那么如何读取配置文件中的信息呢?

【关于SpringBoot的配置文件】_第2张图片

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

【关于SpringBoot的配置文件】_第3张图片

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

【关于SpringBoot的配置文件】_第4张图片

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

【关于SpringBoot的配置文件】_第5张图片

yml语法格式不同于Key-Value格式但又相似于Key-Value格式,具体写法如下:

key: value

注意:冒号后面一定要加空格,否则配置项就不会生效。

 5.读取配置文件方式二:@ConfigurationProperties 读取一个实体类

具体分为两步操作:

1.将配置文件中的一组对象映射到某个类上(以Student类为例)

【关于SpringBoot的配置文件】_第6张图片

 【关于SpringBoot的配置文件】_第7张图片

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

 同样的,在afterPropertiesSet方法中打印Student类实例

结果如下:

 

 总结:具体的步骤为:在配置文件中自定义一个实体类Student,在Model层的Student类中使用@ConfigurationProperties 注解说明需要将配置文件中的哪个实体类映射到当前类当中,注意,需要映射的目标类需要提供Getter和Setter方法,否则就会映射失败,当启动类运行时,就会自动将配置文件中的实体类和目标类完成映射,并且在目标类中添加了@Component注解,即映射完成后会将这个类对象存储到Spring框架中,此时我们在启动类中使用@Autowired注解将这个类对象注入进来,当执行到afterPropertiesSet方法进行打印。

 6.关于.yml配置文件的value值的特征说明:

我们通过案例来分析其特征(代码和程序执行结果如图):

①在自定义配置文件application.yml中配置如下配置项

【关于SpringBoot的配置文件】_第8张图片

 ②在启动类中进行配置项的读取

【关于SpringBoot的配置文件】_第9张图片

 ③运行启动类,afterPropertiesSet方法执行结果如下

【关于SpringBoot的配置文件】_第10张图片

 总结:1.如果是String类型可以不加单引号或者双引号

2.如果加了单引号,运行结果和不加引号的效果是一致的,会自动转义字符串中的特殊符号

3.如果加了双引号,那么字符串中的特殊字符是不会转义的,会按照语义正确执行,比如\n 会执行为换行。

 6.读取配置文件方式二:@ConfigurationProperties 读取一个数据集合

该操作类似于读取实体类,也分为两步,过程也是类似的:

1.配置文件中的数据集合映射到具体类当中

【关于SpringBoot的配置文件】_第11张图片

 【关于SpringBoot的配置文件】_第12张图片

 2.进行打印

 

 结果如图:【关于SpringBoot的配置文件】_第13张图片

 三:properties VS yml

  1. properties是以Key-Value的形式配置文件,yml使用的是类似于json格式的树形配置方式,yml层级之间使用换行缩进的方式配置,key和value之间使用“: ”英文冒号+空格的方式设置,并且空格不可省略。
  2. properties是系统默认自生成的配置文件,也是早期的配置文件格式,但是其配置存在一定的冗余数据,使用yml可以很好的解决数据冗余的问题。
  3. yml通用性更强,支持多语言,不仅仅支持Java、Go、Python等。
  4. yml支持更多的数据类型。
  5. yml格式的配置文件在写的时候更容易出错,而properties虽然写法比较传统和复杂,但可以很好避免出错。
  6. properties和yml可以同时存在于一个项目中,但是假设properties和yml中同时配置了相同的配置项,即对同一个key进行了配置,则只有properties中的配置项生效,而yml中的不会生效,因此,为了避免这个问题,我们最好建议一个项目中使用统一的配置文件类型。

四:Spring Boot中读取配置文件的方式

前两种为我们常用的方式,上面已经描述过了,这里不再进行描述,后三种为不常用的方式,这里仅通过例子进行描述,了解即可,第五种读取方式比较麻烦,是很不推荐的做法,这里不再展示。

  1. @Value

  2. @ConfigurationProperties

  3. Environment

  4. @PropertySource

  5. 使用原生方式读取配置文件

Environment:

使用@Autowired注解

 

 执行结果:

 

 @PropertySource:

创建一个新的properties配置文件(dev.properties):

在启动类前加上@PropertySource注解,指定读取那个properties配置文件以及编码格式:

 使用@Value获取配置项,并将配置项进行打印:

 

执行结果:

 

 总结说明:@PropertySource默认只能读取.properties文件而不能读取.yml文件,如果要读取.yml文件,需要对其中的一些接口进行修改或者重写。@PropertySource注解的用处在于能够指定读取某个.properties文件。

 

你可能感兴趣的:(面试八股文,spring,boot,java,spring)