Spring Boot————@ConfigurationProperties的@Value区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014745069/article/details/83895167

引言

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等,相对的是简单类型如:字符串、数值、日期、布尔等。

总结

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

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

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

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

猜你喜欢

转载自blog.csdn.net/u014745069/article/details/83895167