功能比较 :
@ConfigurationProperties | @Value | |
映射赋值 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法)① | 支持 | 不支持 |
SpEL② | 不支持 | 支持 |
JSR303数据校验③ | 支持 | 不支持 |
复杂类型封装④ | 支持 | 支持 |
说明
① 指属性在配置文件中value是否对驼峰,下划线“_“ 、连接线”-“ 都支持,如下写法,在javaBean中,属性值firstName是否都能获取到值
– person.firstName:使用标准方式 – person.first-name:大写用- – person.first_name:大写用_ – PERSON_FIRST_NAME:推荐系统属性使用这种写法
② value="字面量:{value}、从环境变量:${key}、配置文件中获取值:#{SpeL}
列(《javaEE开发的颠覆者》代码):
@Value("I Love You!") private String normal; @Value("#{systemProperties['os.name']}") private String osName; @Value("#{ T(java.lang.Math).random() * 100.0 }") private double randomNumber; @Value("#{demoService.another}") private String fromAnother; @Value("classpath:com/wisely/highlight_spring4/ch2/el/test.txt") private Resource testFile; @Value("http://www.baidu.com") private Resource testUrl; @Value("${book.name}") private String bookName;
③ 参考:https://blog.csdn.net/qq_28867949/article/details/78922520
④ 对object、map 、array 等对象的赋值。如(注意配置文件,对象属性的写法) :
private Date birth; private Map<String,Object> maps; private List<Object> lists; private Dog dog;