SpringBoot读取配置文件的几种方式
摘自:https://www.pianshen.com/article/27551903537/
一、介绍
在Spring Boot项目中我们经常需要读取application.yml配置文件的自定义配置,今天就来罗列一下从yaml读取配置文件的一些常用手段和方法。
二、@Value
这种是比较简单的方式,直接使用@Value
注解获取配置文件信息。
使用方式如下:
application.yml配置文件
直接使用@Value注解@Value(“${}”)
,默认读取application.yml中的配置信息。
三、@ConfigurationProperties
@ConfigurationProperties注解提供了我们将多个配置选项注入复杂对象的能力。它要求我们指定配置的共同前缀。
可以使用weChat接收we-chat的值,因为这种形式支持从驼峰camel-case到短横分隔命名kebab-case的自动转换。
比如:
默认读取application.yml中的配置信息。
实体类:
注意:使用这种方式,yml中的配置信息不能有大写,否则读取不到。
单独使用@ConfigurationProperties的话依然无法直接使用配置对象,因为它并没有被注册为Spring Bean。我们可以通过两种方式来使得它生效。
- 可以使用
@Component
、@Configuration等
注解注入Spring IoC使之生效。 - 还可以直接使用注解
@EnableConfigurationProperties
进行注册,这样就不需要显式声明配置类为Spring Bean了。
另外还有一个注解可以直接扫描在Spring Boot 2.2.0.RELEASE中提供了一个扫描注解@ConfigurationPropertiesScan
。它可以扫描特定包下所有的被@ConfigurationProperties标记的配置类,并将它们进行IoC注入。
注意:这非常适合自动注入和批量注入配置类的场景,但是有版本限制,必须在2.2.0及以上。
四、@PropertySource
使用“@Value”与“@ConfigurationProperties”可以从全局配置文件“application.properties”或者“application.yml”中取值,然后为需要的属性赋值。当应用比较大的时候,如果所有的内容都当在一个配置文件中,就会显得比较臃肿,同时也不太好理解和维护,此时可以将一个文件拆分为多个,使用 @PropertySource
注解加载指定的配置文件。
例如:
properties文件:
实体类:
注意:
需要有@SpringBootApplication
主启动类、和@RunWith(SpringRunner.class)
注解
总结:
使用@Value
注解可以直接读取application.yml配置文件中的配置信息。
使用@ConfigurationProperties
也可以读取application.yml文件中的配置信息。
使用@ConfigurationProperties
和@PropertySource
可以读取指定properties配置文件中的配置信息。