springboot-@ConfigurationProperties和@Value注解的区别(自学篇)

@ConfigurationProperties和@Value注解的区别

1、@ConfigurationProperties注解

区别如下

1.可以批量的注入配置文件中的属性

application.properties配置文件
springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第1张图片

@configurationProperties @Value
springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第2张图片 springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第3张图片

可见@Value注解的配置繁琐,体现出了@ConfigurationProperties的优势

支持JSR303数据校验
@configurationProperties @Value
springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第4张图片 springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第5张图片

使用@ConfigurationProperties进行数据校验,将会执行数据校验,所以报错
springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第6张图片
使用@Value进行数据校验,将不执行数据校验,所以得到值
信息

支持复杂类型封装(如map)

在application.yml配置文件中添加一个键值对

maps: {
     k1: v1,k2: v2}
@configurationProperties @Value
springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第7张图片 springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第8张图片

@configurationProperties的运行结果
结果
@Value的运行结果
结果

2、@Value注解

需要一个个指定文件中的属性
通过上面对比@Value注解的配置很多建议在合适的应用场景使用
比如在某个业务逻辑中需要获取一下配置文件中的某项普通数据类型的值值
支持SpEL表达式
person.age=#{22*2}
@configurationProperties @Value
springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第9张图片 springboot-@ConfigurationProperties和@Value注解的区别(自学篇)_第10张图片

@configurationProperties的运行结果
很显然说什么类型转换异常,所以@configurationProperties注解不支持
报错
@Value的运行结果
结果
感谢阅读,如有错误,还请指教!

你可能感兴趣的:(笔记,java,spring,boot)