我是靠谱客的博主 欣慰中心,最近开发中收集的这篇文章主要介绍[SpringBoot] @Value 与 @ConfigurationProperties 对比????@Value 与 @ConfigurationProperties 对比,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

✨✨个人主页:沫洺的主页

 ????????系列专栏: ???? 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 对比所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部