@ConfigurationProperties与@Value的区别

在将属性和配置文件进行绑定时,我们使用的是@ConfigurationProperties,实际上还可以使用@Value,这里我们注释掉@ConfigurationProperties,而使用@Value绑定部分属性

@Component
//@ConfigurationProperties(prefix = "person")
public class Person {
    @Value("${person.last-name}")
    private String lastName;
    @Value("${person.age}")
    private Integer age;
    private Boolean boss;
    private Date birth;

当然,没有通过@Value绑定的属性值将为null,如上述中的boss和birth属性

一、两者区别

下面分析两者的区别:

 @ConfigurationProperties@Value
功能批量注入配置文件中的属性,只需要指定prefix即可一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

松散绑定是指:在配置文件中假如我们设置person的属性值为person.last-name,那么@ConfigurationProperties会认为他是person.lastName,而@Value认为属性值本身是什么就是什么,不会把person.last-name解析成person.lastName

二、具体用哪个

如果我们只是需要在某个业务逻辑中获取一下配置文件中的某项值(注意:这里说的是少量值获取),则使用@Value

如果我们专门编写了一个javaBean来与配置文件映射,则使用@ConfigurationProperties

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值