@Value注解信赖很多Spring Boot的开辟者都已经有打仗了,通过利用该注解,我们可以快速的把设置信息加载到Spring的Bean中。
比如下面这样,就可以轻松的把设置文件中key为com.didispace.title设置信息加载到TestService中来利用- @Service
- public class TestService {
-
- @Value("${com.didispace.title}")
- private String title;
- }
复制代码 这个注解可以说非常的好用!但是为什么不推荐大家利用它呢?核心原因是:当我们利用@Value来直接提取设置信息利用的时候,会产生设置信息加载的碎片化。比如,同一个设置,大概背多个Service或者Controller利用,当我们再要修改它的时候,就会存在一个遗漏的风险。我们无法方便的维护这些设置加载而导致一些问题。
那么,假如不利用@Value,我们应该用什么来替代呢?
我比较推荐的就是利用@ConfigurationProperties来分类和加载各种设置信息,比如,我要加载关于com.didispace的相关设置时候,就写一个这样的实现:- @Configuration
- @ConfigurationProperties(prefix = "com.didispace")
- public class DidispaceProperties {
- private String title;
- }
复制代码 这个DidispaceProperties就会加载com.didispace开头的设置。其他Service或者Controller要利用这些设置的时候,就通过注入DidispaceProperties就也可以了。假如要修改设置相关的逻辑,也只须要修改DidispaceProperties中的内容即可,而不是到处找@Value的设置。
另外,在这里,其实还可以增长对设置的校验,主要在pom.xml中引入spring-boot-starter-validation模块。然后修改设置类,增长@Validated注解和具体校验注解,比如:- @Validated
- @Configuration
- @ConfigurationProperties(prefix = "com.didispace")
- public class DidispaceProperties {
- @NotNull
- private String title;
- }
复制代码 这就轻松实现设置的校验了,是不是很方便呢?
今天的分享就到这里。假如您学习过程中如遇困难?可以加入我们超高质量的Spring技术交换群,到场交换与讨论,更好的学习与进步!更多Spring Boot教程可以点击直达!,欢迎收藏与转发支持!
欢迎关注我的公众号:步调猿DD。第一时间相识前沿行业消息、分享深度技术干货、获取优质学习资源
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |