spring boot默认配置文件后缀名可以是properties
或yml
运行结果如下:
两个默认配置文件的内容都可以读取到
@ConfigurationProperties(prefix="XXX")
读取配置文件中的集合和数组
配合ConfigurationProperties
的用法如上。
在这里我做了一个实验,想要看看如果有多个配置文件,并且两个文件都有相同的配置值,spring boot可以把它们整合在一起吗?
application.properties
文件:
application.yml
文件:运行结果如下:
通过实验我们发现spring boot是不会把多个配置文件中相同的配置项整合在一起的,同时也可以看到,如果配置文件中数组配置项的下标不是从0开始,则spring boot会认为他们都是
null
。
动态加载配置文件
如果有些配置信息是需要从数据库或者网络上读取,则EnvironmentPostProcessor
接口就显得非常有用。
需要配置META-INF/spring.factories:
在maven项目中的路径:
spring boot的profile——通过运行参数来激活
上面激活了两个配置,如果只需要一个,可以随意去掉一个。
运行结果如下:
spring boot的profile——通过编程方式来激活
spring boot的profile——与在某些环境下才配置bean
使用@Profile
注解:
另一种方式;
虽然我们使用的是
@Configuration
,但是替换成@SpringBootConfiguration
结果也是一样的,因为@SpringBootConfiguration
是spring boot的注解,@Configuration
是pring的注解,效果是一样的。配置运行参数:
激活pro,dev,test。
测试一下: