ToB企服应用市场:ToB评测及商务社交产业平台
标题:
为什么不推荐在Spring Boot中利用@Value加载设置
[打印本页]
作者:
我爱普洱茶
时间:
2024-5-21 14:33
标题:
为什么不推荐在Spring Boot中利用@Value加载设置
@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企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4