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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
2021-08-05 js 三个input输入框,组合查询。
2021-08-05 Vue.js组件教程 https://www.jb51.net/Special/926.htm
2021-08-05 vue.js实战教程 https://www.jb51.net/Special/978.htm
2021-08-05 原生JS实现多条件筛选
2021-08-05 php结合js实现多条件组合查询
2021-08-05 js前端 多条件筛选查询
2021-08-05 JS 判断字符串是否全部为数字