@ConfigurationProperties是springboot提供读取配置文件中属性的一个注解,它是实现了BeanPostProcessor接口,在bean被实例化后,会调用后置处理,递归的查找属性,通过反射注入值,需要提供getter、setter方法。通常是作用在配置类或组件类上面
一、@ConfigurationProperties 的使用场景
1、如果是多个属性映射,而且经常被复用,推荐使用 @ConfigurationProperties,此方式无需给默认值,读取不到属性默认为空
2、如果只读取单个属性则推荐使用 @Value,@Value支持spel表达式,必须给默认值,否则读取不到属性会报错
二、@ConfigurationProperties 的使用方法
1、配合 @Component 或 @Configuration 使用
配置类属性:
@Data
@Component
@ConfigurationProperties(prefix = "test.properties")
@RefreshScope
public class TestConfigurePropertiesDto {private String name;private String address;private Integer age;private String email;}
配置中心属性:
test:properties:name: 张三郎address: 上海市age: 30email: 676311615@qq.com
说明:
【1】必须提供 getter、setter 方法,否则无法注入属性值
【2】此方式必须将当前属性类交给Spring容器管理,也就是标注为 @Component 或 @Configuration
【3】属性名称和配置中心属性名称不一定一致,但最好保持一致
2、配合 @Component 或 @Configuration 使用
配置类属性:
@Data
public class TestConfigurePropertiesDto {private String name;private String address;private Integer age;private String email;}
@Bean标注实例方法:
@Bean
@ConfigurationProperties(prefix = "test.properties")
@RefreshScope
public TestConfigurePropertiesDto testConfigurePropertiesDto(){return new TestConfigurePropertiesDto();
}
配置中心属性:
test:properties:name: 张三郎address: 上海市age: 30email: 676311615@qq.com
小结:
按照上述两种使用方式,都可以正常读取配置中心属性值