SpringBoot学习之@ConfigurationProperties和@value区别

@ConfigurationProperties和@value区别

@ConfigurationProperties@value
功能批量注入配置文件中的属性一个个指定
松散语法支持不支持
SpEl不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

1.松散语法:
当年使用@ConfigurationProperties时,在配置文件中为对应属性赋值,如
person:

public class Person {
    private String LastName;
    private int age;

yaml文件:

person:
  last-name: zhangsan
  age: 20

其中lastName可以写成last-name,是没有影响的。
当你使用@value时,你在person类中这样写
person:

public class Person {
@value("${person.lastName})
    private String LastName;
    private int age;

yaml文件:

person:
  last-name: zhangsan
  age: 20

它是不支持的,因为person类中value引用的值和yaml中last-name是不同的
可以将yaml文件中last-name改为lastName或者将value中的person.lastName改为last-name。
2.SpEl
在person类中使用value("${10*2})时在取得结果时是可以算出来的,而使用@ConfigurationProperties时,在配置文件中使用,如

person:
  last-name: zhangsan
  age: 10*2

是不行的
3.JSR303数据校验
如代码

@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
    @Email
    private String lastName;
    private int age;

当加入@Validated时在lastName上加入@Email代表lastName格式要写成邮箱格式

4.复杂类型封装
如map,list这些@ConfigurationPropertie是支持的,@value是不支持的

如果说,只是在某项业务逻辑使用某个值,可以直接使用@value

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值