SpringBoot中@ConfigurationProperties和@Value的区别

1、在SpringBoot中,可以使用@ConfigurationProperties注解结合配置文件给实体赋值,也可以使用@Value注解直接赋值

@Component
//@ConfigurationProperties(prefix = "student")
public class Student {
    @Value("ww")
    private String name;
    @Value("23")
    private int age;
    ...
    // 不管注入的值时什么类型都写在双引号中

两种方法可以同时使用,@ConfigurationProperties注解的优先级高,会覆盖@Value的值。@ConfigurationProperties注解是一次注入全部,而@Value是单个注入

2、@ConfigurationProperties注解支持松散语法,@Value不支持

  • java实体类中的驼峰命名规则如 nickName,在yml中可以使用-代替如nick-name
private String nickName;
pet: 
	nick-name: wc

3、@Value支持SpEL表达式,@ConfigurationProperties不支持

  • 可以将yml文件中的某个属性值注入到该属性上
@Value("${pet.uname}")
private String nickName;
pet:
	uname: wc

4、@ConfigurationProperties支持JSR303校验,@Value不支持

@Component
@ConfigurationProperties(prefix="student")
@Validated // 开启jsr303校验
public class Student{
	@Email
	private String email;
}
studnet:
	email: 1212@qq.com

5、@ConfigurationProperties支持注入复杂类型,@Value不支持

  • 简单类型(8种基本数据类型/String/Date)
  • @Value不支持注入复杂类型
@Value("{province: 湖北,city: 武汉, zone: 洪山}")
private Map<String, Object> location;

这种会直接报错

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值