(6)SpringBoot - ConfigurationProperties和Value的区别

在前面(4)中使用 @ConfigurationProperties(prefix = “person”) 可以将本类中的所有属性和配置文件中相关的配置进行绑定

还有另外一种方法可以与相关的配置进行绑定
使用@Value
我们首先将 @ConfigurationProperties(prefix = “person”)给注释掉,使用@Value进行赋值

(6)SpringBoot - ConfigurationProperties和Value的区别
结果显示:
(6)SpringBoot - ConfigurationProperties和Value的区别

ConfigurationProperties和Value的比较:

@ConfigurationProperties @Value
功能 批量注入配置文件中的属性 一个个指定
松散绑定(松散语法) 支持 不支持
SpEL 不支持 支持
JSR303数据校验 支持 不支持
复杂类型封装 支持 不支持

什么时候使用这两者最为合适?
配置文件yml还是properties他们都能获取到值:
如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value;
如果说,我们专门编写了一个JavaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties;