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 Boot中使用@Value加载配置的文章就介绍到这了,更多相关Spring Boot使用@Value加载配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中实现Comparator接口和用法实例(简明易懂)
这篇文章主要介绍了Java中实现Comparator接口和用法实例(简明易懂),本文给出实现Comparator接口的实例和使用这个接口的代码实例,需要的朋友可以参考下2015-05-05
最新评论