概述
文章目录
- @ConfigurationProperties与@Value区别
- 使用位置
- 二者功能不同
- 松散绑定
- SpEL
- 复杂类型封装
- 总结
@ConfigurationProperties与@Value区别
使用位置
@ConfigurationProperties
:标注在JavaBean的类名上;@Value
:标注在JavaBean的属性上。
@ConfigurationProperties
位置如下:
@Value
位置如下:
二者功能不同
@ConfigurationProperties
是可以批量注入的,一次搞定,而@Value
只能一个一个注入,
如下:
//@Value:注意一个容器已经存在的对象 @Value("${student.student-name}")
@Value("${student.student-name}")
private String studentName;
@Value("${student.age}")
private Integer age;
@Value("true")
private Boolean sex;//男代表true
但是我们使用@ConfigurationProperties
就配置一行就完事了:
// 读取主配置文件中的数据,赋值给student对象
// prefix: 需要属性,指定主配置文件中的数据
@ConfigurationProperties(prefix = "student")
public class Student {
private String studentName;
private Integer age;
private Boolean sex;//男代表true
}
松散绑定
PS:什么是松散绑定????
松散绑定是springboot在使用 @EnableConfigurationProperties 注解里面提出来的,也就是说在application.yml文件中,可以不那么严格的去命名变量名。
松散语法属性名匹配规则是这样的:
- studentName:使用标准驼峰方式
- student-name:一般小写用
-
- STUDENT_NAME:一般大写用
_
比如说ipaddress可以在配置文件中有多种出线形势,但是在代码里面还是要以驼峰命名。
ipAddress: 192.168.0.1 // 驼峰命名
ipaddress: 192.168.0.1 //
ip_Address: 192.168.0.1 // 下划线命名
ip-address: 192.168.0.1 // -线命名
在代码中:
@Component
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
private String ipAddress;
}
PS结束了
@ConfigurationProperties支持松散绑定studentName可以写为student-name都没有问题。而@Value不可以。@Value进行绑定时,名称只能与application.properties中属性的名称相同
SpEL
@ConfigurationProperties不支持SpEL,比如:
properties中配置
#配置student
student.student-name=jack
student.age=#{18+5} //这里是直接报错
student.sex=true
Yml文件配置不支持SpEL
student:
student-name: rose@qq.com
age: #{18+8} #不会报错,但是不能注入到student的age中
sex: false
@Value支持SpEL。比如:
@Value("#{18+8}")
private Integer age;
Age是可以正常注入的。
复杂类型封装
@ConfigurationProperties支持复杂类型封装
@Value不支持复杂类型,只支持字符串,和基本数据类型及其包装类。
总结
区别 | @ConfigurationProperties | @Value |
---|---|---|
位置 | 类名上 | 属性上 |
功能 | 批量注入属性文件中的属性 | 一个个的指定 |
松散绑定(松散语法) | 支持 | 不支持 |
SpEL | 不支持 | 支持 |
JSR303数据校验 | 支持 | 不支持 |
复制类型封装 | 支持 | 不支持 |
最后
以上就是安详香氛为你收集整理的@ConfigurationProperties与@Value区别@ConfigurationProperties与@Value区别总结的全部内容,希望文章能够帮你解决@ConfigurationProperties与@Value区别@ConfigurationProperties与@Value区别总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复