Python 官方文档:入门教程 => 点击学习
@Value 和 @ConfigurationProperties 注解都能读取配置文件中的属性值并绑定到 JavaBean 中,但两者存在以下不同。 区别@Configuratio
@Value 和 @ConfigurationProperties 注解都能读取配置文件中的属性值并绑定到 JavaBean 中,但两者存在以下不同。
区别 | @ConfigurationProperties | @Value |
使用位置不同 | 标注在 JavaBean 的类名上 | 标注在 JavaBean 的属性上 |
功能不同 | 用于批量绑定配置文件中的配置 | 单值绑定 |
松散绑定(松散语法) | 支持 | 部分支持 |
Spel | 不支持 | 支持 |
复杂类型封装 | 支持 | 支持,比较繁琐 |
jsR303数据校验 | 支持 | 不支持 |
应用场景不同 | 通过JavaBean获取整个配置文件 | 单个属性值 |
说明
使用位置不同
@Component
@Data
@ConfigurationProperties(prefix = "person")
@PropertySource("classpath:person.properties")
public class Person {
private String firstName;
}
@Component
@Data
@PropertySource("classpath:user.properties")
public class User {
@Value("${user.username}")
private String username;
}
功能不同
松散绑定支持不同
@ConfigurationProperties:支持松散绑定(松散语法),例如实体类 Person 中有一个属性为 firstName,那么配置文件中的属性名支持以下写法:
@Vaule:不支持松散绑定。
SpEL 支持不同
SpEL表达式:#{obj}
@Value("#{${girl.hobbyMap}}")
private Map<String,Object> hobbyMap;
复杂类型封装
属性校验
@Configuration
@ConfigurationProperties(prefix = "boy")
@Data
@PropertySource("classpath:boy.properties")
@Validated
public class Boy {
@NotNull//不为空
private String name;
@Min(20)//不小于20
private int age;
}
应用场景不同
@Value 和 @ConfigurationProperties 两个注解之间,并没有明显的优劣之分,它们只是适合的应用场景不同而已。
在选用时,根据实际应用场景选择合适的注解能达到事半功倍的效果。
到此这篇关于SpringBoot @Value与@ConfigurationProperties二者有哪些区别的文章就介绍到这了,更多相关springBoot @Value与@ConfigurationProperties内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: SpringBoot @Value与@ConfigurationProperties二者有哪些区别
本文链接: https://lsjlt.com/news/170181.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0