标签:name 配置文件 JSR303 Value person ConfigurationProperties
ConfigurationProperties和Value
https://blog.csdn.net/qq_45678953/article/details/117266855
SpringBoot之ConfigurationProperties和Value注解的区别
1.@ConfigurationProperties和@Value获取值的比较
@ConfigurationProperties | @Value | |
---|---|---|
功能 | 批量注入配置文件中的属性 | 一个个指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303 | 支持 | 不支持 |
复杂类型封装 | 支持 | 不支持 |
无论使用@ConfigurationProperties
还是@Value
都可以获取到值
如果说, 我们只是在某个业务逻辑中需要获取一下配置文件中某项的值, 使用@Value
如果说, 我们专门编写了一个JavaBean来和配置文件进行映射, 我们就直接使用@ConfigurationProperties
解释
-
松散绑定(松散语法)
例如如下Javabean属性
private String lastName;
- 1
使用
@ConfigurationProperties
注解时配置文件中与之绑定的属性名可以为 lastName 或 last_name 或 last-name 或 LASTNAME 或 LAST_NAME 或 LAST-NAME, 但是使用@Value
时必须明确指定配置文件中与之绑定的属性名@Value("${person.last-name}") private String lastName;
- 1
- 2
-
SpEL
@Value
给Javabean属性绑定属性值时可以使用SpEL语法, 但是@ConfigurationProperties
不能使用@Value("#{10*12}") private Integer id;
- 1
- 2
-
JSR303
使用
@ConfigurationProperties
可以使用JSR303数据校验, 但是@Value
不可以@Component @Validated public class Person { @Email private String name;
- 1
- 2
- 3
- 4
- 5
-
关于使用JSR303数据校验
-
导入spring-boot-starter-validation依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
- 1
- 2
- 3
- 4
-
在需要使用JSR303数据校验的类上添加
@Validated
注解 -
在需要JSR303数据校验的地方添加JSR303数据校验注解
-
-
复杂类型封装
使用
@ConfigurationProperties
时, 在配置文件中配置的任何类型元数据均可以绑定到Javabean属性, 但是@Value
只能绑定到配置文件中的基本数据类型数据@Value("男") private String gender; @Value("${person.last-name}") private String lastName;
- 1
- 2
- 3
- 4
person.id=20 person.name=ml person.gender=男 person.age=20 person.boss=false person.birth=2000/10/05 person.pets=dog,cat,pig person.map.1=周一 person.map.2=周二 person.map.3=周三 person.dog.name=狗子 person.dog.gender=大漂亮 person.dog.age=2 person.LASTNAME=哈哈哈哈
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
标签:name,配置文件,JSR303,Value,person,ConfigurationProperties 来源: https://www.cnblogs.com/sunny3158/p/16553910.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。