@ConfigurationProperties
告诉SpringBoot将本类中的所有属性和配置文件相关的配置进行绑定。
- 属性值: prefix = “person”:配置文件中哪个下面的所有属性进行一一映射
- 例子:
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birht;
private Map<String,Object> maps;
//此处省略getter()、setter()、toString()等方法
}
person:
lastName: zhangsan
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v2,k2: v2}
lists:
-list
-zhaoliu
- 返回结果
Person{lastName='张三', age=18, boss=false, birht=Tue Dec 12 00:00:00 CST 2017, maps={k1=v1, k2=14}, lists=[a, b, c]}}
- 总结:如果注解使用在类上,注解中需要注明prefix属性,告诉SpringBoot,配置文件中哪个下面的所有属性都进行一一映射。
@Value
@Component
@Validated
public class Person {
@Value("${person.lastName}")
private String lastName;
@Value("#{11*2}")
private Integer age;
private Boolean boss;
private Date birht;
private Map<String,Object> maps;
private List<Object> lists;
person:
lastName: zhangsan
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v2,k2: v2}
lists:
-list
-zhaoliu
- 结果:
Person{lastName='zhangsan', age=22, boss=null, birht=null, maps=null, lists=null, dog=null}
- 总结:@Value会取出配置文件中的每一个内容,分别放入对应的属性中。
比较
@ConfigurationProperties | @Value | |
---|---|---|
源头 | SpringBoot定义的注解 | Spring定义的注解 |
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |