除了通过注解@ConfigurationProperties让JavaBean的所有属性和全局配置文件中配置项建立关联关系外,我们spring提供了一个@Value注解,获取全局配置文件中的某个配置项的数据
接下来,我们重点说一下两个注解的的区别:
@ConfigurationProperties:是和JavaBean的所有属性绑定
@Value:是一个一个属性绑定
@ConfigurationProperties:不支持spring表示式的写法
@Value:支持spring的表达式的写法,#{12+13}
@ConfigurationProperties:支持JSR303数据校验
@Value:不支持JSR303数据校验
@ConfigurationProperties:支持复杂的类型绑定,比如Map,List
@Value:不支持复杂的类型绑定,比如${user.map}是读不出数据的
从区别中我们可以得到这样的结论或建议:
① 当我们有JavaBean与全局配置文件里的数据对应的时候,我们就用@ConfigurationProperties注解
② 当我们只是需要配置文件中某一个值的时候,就用@Value注解