我是靠谱客的博主 合适鱼,最近开发中收集的这篇文章主要介绍Spring Boot——@ConfigurationProperties与@Value的区别引言一、区别比较二、@Value 使用三、@ConfigurationProperties 使用总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

引言

Spring Boot从配置文件中取值的方式有两种,一种是批量注入@ConfigurationProperties,另一种是单独注入@Value。

它们之间除了批量与单独取值的区别之外,还存在着其他一些使用方式,本篇博客将详细讲解这两种注解之间的区别和使用方式。

一、区别比较

注:

松散绑定,指配置文件中的属性名与Bean中的属性名大小写不完全一致,但是字母相同的情况。

比如bean中可以是Birth_day,配置文件(yaml)中是 bir-thday、或 BIRTH_DAY、或b-i-r-t-h-d-a-y等。

SpEL,指的是spring 表达式,格式:#{SpEL expression} ,如:#{2 * 10}

JSR303数据校验,Jsr-303是一种注解方式的数据校验,可以通过标记在属性上来判断从配置文件中映射的值是否符合我们的要求,如@NotNull字段不允许为空、@Email字段格式必须是电子邮件,这些注解一般都被放在javax.validation.constraints包下,并且除了将这些校验注解标记在属性上,另外还需要在被校验的类上标记@Validated注解(org.springframework.validation.annotation包下)才能生效。

复杂类型,指对象、Map、List等,相对的是简单类型如:字符串、数值、日期、布尔等。

二、@Value 使用

如果在 配置文件中有属性配置,可以直接通过@Value注入到目标类中。

@Value("${spring.datasource.url}")
private String url;

三、@ConfigurationProperties 使用

在企业实际开发中,有时候需要一些和业务相关的配置,且配置项较多,于是,我们就可以通过 @ConfigurationProperties 来完成。

与 @Value 的单兵作战不同,@ConfigurationProperties 可以和一个 完整的类进行映射,因此,会通过一个 XxxProperties 类来组织这些配置。

通常,我们会为 @ConfigurationProperties 添加 一个 prefix 属性,这个属性最好与类名的Xxx保持一致:

然后,我们为配置类添加一些属性,并在 配置文件中为它们进行赋值即可。

总结

@ConfigurationProperties和@Value的使用都是比较简单的。首先,最重要的就是前者是批量导入属性,后者是单独导入某一条属性。

他们的区别主要是对一些特性的支持如松散绑定、SpEL、JSR-303数据校验、复杂类型的封装。

关于如何在全局配置文件中定义复杂类型,可以参考另一篇文章《Spring Boot————YAML配置文件》

更多Spring Boot技术分享,可以关注博主,也可以文末留言。

最后

以上就是合适鱼为你收集整理的Spring Boot——@ConfigurationProperties与@Value的区别引言一、区别比较二、@Value 使用三、@ConfigurationProperties 使用总结的全部内容,希望文章能够帮你解决Spring Boot——@ConfigurationProperties与@Value的区别引言一、区别比较二、@Value 使用三、@ConfigurationProperties 使用总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部