SpringBoot提供了非常方便的外部文件配置功能,相关内容放在官方文档的 Spring Boot Features部分下的 Externalized Configuration。
SpringBoot默认支持 application-{profile}.properties 和 YAML文件的配置内容,配置文件支持占位符,比如${app.name}来访问已经配置的 app.name属性。Spring容器识别到这些属性之后,可以通过@Value注入、或通过Environment接口访问、或者通过 @ConfigurationProperties注解绑定到对象 来使用这些属性。
尽量使用YAML文件取代properties文件。
@ConfigurationProperties注解
使用该注解时,需要配置一个prefix属性,用来绑定这个前置下的所有配置到一个对象上。
由于需要的是一个bean,同时还要配合@Component @Bean等注解一起使用。或者在配置类上使用@EnableConfigurationProperties(AcmeProperties.class),而AcmeProperties类上加上@ConfigurationProperties注解即可。
这个配置类的字段上可以加上一些@NotNull等校验注解,而类上加上@Validated注解。
松绑定支持:配置项可以稍微灵活一点,这样也是能够识别并注入。
配置元数据
如果有一些自定义的配置项,并且其他人使用时能够让idea等工具给出提示,可以配置元数据。
相关章节查看 Configuration Metadata。
@PropertySource注解
该注解用于指定读取的properties文件,会将配置文件的配置项注入到Spring容器供用户使用。
它的作用是读取属性文件内容到Spring容器,并供@Value/Enviroment接口/@ConfigurationProperties使用属性。
显然它可以与@ConfigurationProperties配合一起使用。