Spring Boot中使用@Value加载配置的方法

 更新时间:2024年05月25日 08:58:26   作者:程序猿DD  
@Value注解相信很多Spring Boot的开发者都已经有接触了,通过使用该注解,我们可以快速的把配置信息加载到Spring的Bean中,这篇文章主要介绍了为什么不推荐在SpringBoot中使用@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加载配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringMvc实现简易计算器功能

    SpringMvc实现简易计算器功能

    这篇文章主要为大家详细介绍了SpringMvc实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Java中的线程中断机制和LockSupport详解

    Java中的线程中断机制和LockSupport详解

    这篇文章主要介绍了Java中的线程中断机制和LockSupport详解,在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作,因此,Java提供了一种用于停止线程的协商机制中断,也即中断标识协商机制,需要的朋友可以参考下
    2023-09-09
  • java代码块之简易qq登录界面及按钮颜色设置代码

    java代码块之简易qq登录界面及按钮颜色设置代码

    这篇文章主要介绍了java代码块之简易qq登录界面及按钮颜色设置代码,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java实现不同的类的属性之间相互赋值

    Java实现不同的类的属性之间相互赋值

    今天小编就为大家分享一篇关于Java实现不同的类的属性之间相互赋值,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • Java微信支付之公众号支付、扫码支付实例

    Java微信支付之公众号支付、扫码支付实例

    微信支付已经成为生活中必不可少的付款方式,本篇文章主要介绍了Java微信支付之公众号支付、扫码支付,有需要的小伙伴可以了解一下。
    2016-11-11
  • Java中实现Comparator接口和用法实例(简明易懂)

    Java中实现Comparator接口和用法实例(简明易懂)

    这篇文章主要介绍了Java中实现Comparator接口和用法实例(简明易懂),本文给出实现Comparator接口的实例和使用这个接口的代码实例,需要的朋友可以参考下
    2015-05-05
  • java中Servlet程序下载文件实例详解

    java中Servlet程序下载文件实例详解

    在本篇文章里小编给大家整理的是一篇关于java中Servlet程序下载文件实例内容,有兴趣的朋友们可以学习参考下。
    2021-02-02
  • java开发中防止重复提交的几种解决方案

    java开发中防止重复提交的几种解决方案

    我们日常开发中有很多的应用场景都会遇到重复提交问题,下面这篇文章主要给大家介绍了关于java开发中防止重复提交的几种解决方案,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-10-10
  • Java递归寻路实现,你真的理解了吗

    Java递归寻路实现,你真的理解了吗

    递归就是一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,需要的朋友可以参考下
    2021-08-08
  • java POI解析Excel 之数据转换公用方法(推荐)

    java POI解析Excel 之数据转换公用方法(推荐)

    下面小编就为大家带来一篇java POI解析Excel 之数据转换公用方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08

最新评论