区别 | @ConfigurationProperties | @Value |
使用位置不同 | 标注在 JavaBean 的类名上 | 标注在 JavaBean 的属性上 |
功能不同 | 用于批量绑定配置文件中的配置 | 单值绑定 |
松散绑定(驼峰命名语法) | 支持 | 部分支持 |
Spel | 不支持 | 支持 |
复杂类型封装 | 支持 | 支持,比较繁琐 |
JSR303数据校验 | 支持 | 不支持 |
应用场景不同 | 通过JavaBean获取整个配置文件 | 单个属性值 |
总结:@Value 和 @ConfigurationProperties 两个注解之间,并没有明显的优劣之分,它们只是适合的应用场景不同而已
-
@Value:若只是获取配置文件中的某项值,则推荐使用 @Value 注解
-
@ConfigurationProperties:若专门编写了一个 JavaBean 来和配置文件进行映射,则建议使用 @ConfigurationProperties 注解