@ConfigurationProperties松散绑定,和复杂数据类型绑定。顺便比较和@Value的区别

原文链接https://www.toutiao.com/article/7190589733473370664/?&source=m_redirect

 


比较项

@Value

@ConfigurationProperties

使用方式

需要一个个指定

能够批量地注入配置文件中的属性

所属框架

Spring

Spring Boot

SPEL

支持

不支持

JSR303数据校验

不支持

支持

松散绑定

不支持

支持

复杂类型绑定

不支持

支持

使用方式

  1. @Value需要在Bean的成员属性或者set方法上,逐个设置,和配置文件进行映射。@Value("${user.username}")
  2. @ConfigurationProperties可以在类上直接配置,属性会自动映射绑定。
@ConfigurationProperties(prefix = "bsfit.user")
@Component
public class User {

    private String userName;

    private Integer age;
}

小结: 如果一个bean下的配置比较多的话,使用@ConfigurationProperties比较方便。

所属框架:

  1. @Value是spring框架的注解,在spring-beans这个工程中。
  2. @ConfigurationProperties注解是Spring Boot实现的一个注解,用于配置文件对对象属性的配置。

SPEL:

  1. @Value是支持SPEL表达式的,如下:
1
2
@Value("#{ T(java.lang.Math).random() * 100.0 }")
 private double randomNumber;
 
  1. @ConfigurationProperties不支持SPEL表达式,验证方式如下:
1
2
3
bsfit.user:
  user-name: ${person.last-name}
  age: #{5*2}

 

1
2
3
4
5
6
7
8
@ConfigurationProperties(prefix = "bsfit.user")
@Component
public class User {
 
    private String userName;
 
    private Integer age;
}

  

输出结果如下,@ConfigurationProperties无法执行SPEL表达式。、

 小结: @Value在取值方面更加强大,支持SPEL, 同时还能注入URL、文件等资源

数据校验

  1. @Value不支持数据校验
  2. @ConfigurationProperties支持数据校验,验证如下:

 

 

 

 

 

 

 

 

posted on   宇宙小子  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示