SpringBoot中注解@ConfigurationProperties与@Value的区别与使用详解
目录
- 注解@ConfigurationProperties
- 注解@Value
- 区别
- 松散语法绑定:
- SpEl语法表示:
- JSR303数据校验:
- 复杂类型封装:
- 配置文件注入值数据校验
注解@ConfigurationProperties
该注解的作用是将配置文件中配置的每一个属性的值,映射到这个组件中。@ConfigurationProperties :告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定 prefix = “person”:配置文件中哪个下面的所有属性进行一一映射。简言之,也就是只有这个组件是容器中的组件;才能在容器中提供的@ConfigurationProperties功能。
注解@Value
该注解就是将配置文件中的某项值读出来,@Value("$(key)"),其中key的值从环境变量、配置文件中获取值
区别
文章图片
该表格展示了这两个注解的区别,其中,松散语法绑定的定义如下:
松散语法绑定:
- - person.firstName : 使用标准方法
- - person.first-name : 大写用-
- - person.first_name : 大写用_
- - PERSON_FIRST_NAME : 推荐系统属性使用这种写法
SpEl语法表示:
其中,@Value可以直接计算表达式的值,如:@Value(#{11*2})
JSR303数据校验:
注解@ConfigurationProperties(prefix = "person")可以搭配@Validated使用
复杂类型封装:
支持读入类中的所有属性,比如,想读如person中的所有属性,使用@ConfigurationProperties(prefix = "person")
# 配置person的值person.last-name=zhangsanperson.age=18person.birth=2017/12/12person.boss=falseperson.maps.k1=v1person.maps.k2=14person.lists=a,b,vperson.dog.name=二哈person.dog.age=2
使用方法区别:
配置文件无论是yml还是properties他们都能获取
如果说,我们只是说在某个业务逻辑中需要获取一下配置文件中的某项值,就使用@Value
如果说,我们专门编写了一个javaBean来和配置文件映射,我们就直接使用
配置文件注入值数据校验
注入值校验主要用的是@Validated注解,像代码中private String lastName; 可以使用@Email,虽然使用姓名使用邮件格式可能不太合适,此处只是为了举例子,意思是lastName必须是邮箱格式
@Component@ConfigurationProperties(prefix = "person")@Validatedpublic class Person {/******>* *///lastName必须是邮箱格式@Email//@Value("${person.last-name}")private String lastName; //@Value("#{11*2}")private Integer age; //@Value("true")private Boolean boss; private Date birth; //@Value("${person.maps}")private Map maps; private List
【SpringBoot中注解@ConfigurationProperties与@Value的区别与使用详解】到此这篇关于SpringBoot中注解@ConfigurationProperties与@Value的区别与使用详解的文章就介绍到这了,更多相关SpringBoot @ConfigurationProperties @Value内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 热闹中的孤独
- Shell-Bash变量与运算符
- JS中的各种宽高度定义及其应用
- 2021-02-17|2021-02-17 小儿按摩膻中穴-舒缓咳嗽
- 深入理解Go之generate
- 异地恋中,逐渐适应一个人到底意味着什么()
- Activiti(一)SpringBoot2集成Activiti6
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- “成长”读书社群招募