概述
✨✨个人主页:沫洺的主页
????????系列专栏: ???? JavaWeb专栏???? JavaSE专栏 ???? Java基础专栏????vue3专栏
????MyBatis专栏????Spring专栏????SpringMVC专栏????SpringBoot专栏
????????如果文章对你有所帮助请留下三连✨✨
????@Value 与 @ConfigurationProperties 对比
@Value 和 @ConfigurationProperties 注解都能读取配置文件中的属性值并绑定到 JavaBean 中,但两者存在以下不同。
区别 @ConfigurationProperties @Value 使用位置不同 标注在 JavaBean 的类名上 标注在 JavaBean 的属性上 功能不同 用于批量绑定配置文件中的配置 单值绑定 松散绑定(松散语法) 支持 部分支持 Spel 不支持 支持 复杂类型封装 支持 支持,比较繁琐 JSR303数据校验 支持 不支持 应用场景不同 通过JavaBean获取整个配置文件 单个属性值 说明
使用位置不同
@ConfigurationProperties:标注在 JavaBean 的类名上;
@Value:标注在 JavaBean 的属性上。
@Component @Data @ConfigurationProperties(prefix = "person") @PropertySource("classpath:person.properties") public class Person { private String firstName; }
@Component @Data @PropertySource("classpath:user.properties") public class User { @Value("${user.username}") private String username; }
功能不同
@ConfigurationProperties:用于批量绑定配置文件中的配置;
@Value:只能一个一个的指定需要绑定的配置。
松散绑定支持不同
@ConfigurationProperties:支持松散绑定(松散语法),例如实体类 Person 中有一个属性为 firstName,那么配置文件中的属性名支持以下写法:
person.firstName
person.first-name
person.first_name
PERSON.FIRST_NAME
@Vaule:不支持松散绑定。
SpEL 支持不同
SpEL表达式:#{obj}
@ConfigurationProperties:不支持 SpEL 表达式;
@Value:支持 SpEL 表达式。
@Value("#{${girl.hobbyMap}}") private Map<String,Object> hobbyMap;
复杂类型封装
@ConfigurationProperties:支持所有类型数据的封装,例如 Map、List、Set、以及对象等;
@Value:支持基本数据类型的封装,例如字符串、布尔值、整数等类型, 对集合Map list set配置有要求
属性校验
@Value不支持属性校验
@ConfigurationProperties 支持属性校验
@Configuration @ConfigurationProperties(prefix = "boy") @Data @PropertySource("classpath:boy.properties") @Validated public class Boy { @NotNull//不为空 private String name; @Min(20)//不小于20 private int age; }
应用场景不同
@Value 和 @ConfigurationProperties 两个注解之间,并没有明显的优劣之分,它们只是适合的应用场景不同而已。
若只是获取配置文件中的某项值,则推荐使用 @Value 注解;
若专门编写了一个 JavaBean 来和配置文件进行映射,则建议使用 @ConfigurationProperties 注解。
在选用时,根据实际应用场景选择合适的注解能达到事半功倍的效果。
最后
以上就是欣慰中心为你收集整理的[SpringBoot] @Value 与 @ConfigurationProperties 对比????@Value 与 @ConfigurationProperties 对比的全部内容,希望文章能够帮你解决[SpringBoot] @Value 与 @ConfigurationProperties 对比????@Value 与 @ConfigurationProperties 对比所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复