ConfigurationProperties注解可以很方便的把一些配置文件转化为一个bean,
基本用法如下
@Component
@ConfigurationProperties("redis")
public class RedisProp {
private String host;
private String port;
private String password;
// getter && setters....
}
yml配置文件如下:
redis:
host: 127.0.0.1
port: 6808
password: pwd
需要确保maven中有如下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
configuration-processor的作用是maven编译时自动生成spring-configuration-metadata.json文件。
初始化bean
第一种方法:使用Component注解
@Component
@ConfigurationProperties("redis")
public class RedisProp {
}
第二种方法:使用EnableConfigurationProperties
@Configuration
@EnableConfigurationProperties(RedisProp.class)
public class MyConfiguration {
}
使用外部bean
当使用jar包中的bean时,我们是无法进行上述操作的,这种情况下可以这么处理:
@Bean
@ConfigurationProperties("redis1")
public GenericObjectPoolConfig redis1(){
return new GenericObjectPoolConfig();
}
@Bean
@ConfigurationProperties("redis2")
public GenericObjectPoolConfig redis2(){
return new GenericObjectPoolConfig();
}
配置文件的查找顺序
@ConfigurationProperties(prefix="person")
public class OwnerProperties {
private String firstName;
public String getFirstName() {
return this.firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
}
firstName的查找顺序如下:
person.firstName
person.first-name
person.first_name
PERSON_FIRST_NAME