@ConfigurationProperties与@Value的区别

  • @Value 与 @ConfigurationProperties 都可以从全局配置文件中获取值然后注入到属性中
对比项         @ConfigurationProperties  @Value  
注解功能将配置文件中的属性值批量注入类的各个属性为类中的各个属性逐个赋值
松散绑定支持不支持
SpEL(Spring 表达式)不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

所谓松散语法也就是属性命名规则(Relaxed binding)

- person.firstName:使用标准方式
- person.first-name:大写用-         
- person.first_name:大写用_
- PERSON_FIRST_NAME: 系统属性推荐使用这种写法

@ConfigurationProperties支持松散语法         @Value不支持松散语法

application.properties文件中有字段 persion.first-name

@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String firstName;

}

JSR303数据校验(@Validation)

@ConfigurationProperties @Validated 支持      @Value不支持

@ConfigurationProperties
@Validated
public class Properties {

    @NotNull
    private String userName;
    
    @Email
    private String email;
    
}

SpEl

@ConfigurationProperties不支持EL表达式

application.properties文件中有字段 person.userAge=12 

userAge = 12   //可以
userAge = #{2*6}  //EL表达式不支持

@Value支持EL表达式

@Value(userAge=#{2*6}) //支持EL表达式

两者都可以从配置文件 .yml 与 .properties 中获取到值;
如果项目中只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value即可;
如果项目中专门编写了一个JavaBean来和配置文件进行映射,则直接使用@ConfigurationProperties即可;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值