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加载配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mybatis-Plus 自动填充失效问题解决

    Mybatis-Plus 自动填充失效问题解决

    在使用MyBatis-Plus时,自动填充功能可能会失效,这通常与版本和配置有关,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • java迭代器移除元素出现并发修改异常的原因及解决

    java迭代器移除元素出现并发修改异常的原因及解决

    这篇文章主要介绍了java迭代器移除元素出现并发修改异常的原因及解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • MyBatis使用<foreach>标签like查询报错解决问题

    MyBatis使用<foreach>标签like查询报错解决问题

    这篇文章主要介绍了MyBatis使用<foreach>标签like查询报错解决问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • springboot返回时间戳问题

    springboot返回时间戳问题

    在SpringBoot中配置时间格式,可以通过配置类或配置文件实现,若需处理日期,可直接在配置文件中设置,存储时间戳毫秒值时,建立数据库字段精度为3,确保时间精确,这些个人经验供参考
    2024-09-09
  • Java实现文件或文件夹的复制到指定目录实例

    Java实现文件或文件夹的复制到指定目录实例

    本篇文章主要介绍了Java实现文件或文件夹的复制到指定目录实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • JAVA实现FTP断点上传的方法

    JAVA实现FTP断点上传的方法

    这篇文章主要介绍了JAVA实现FTP断点上传的方法,涉及java使用FTP实现文件传输的相关技巧,需要的朋友可以参考下
    2015-06-06
  • Spring Boot的无缝衔接实践案例

    Spring Boot的无缝衔接实践案例

    在快速迭代的软件开发环境中,无缝衔接是提升开发效率、降低维护成本、增强系统稳定性的关键,本文将深入解析Spring Boot无缝衔接的几大优势,并通过实际案例和深入分析,展示这些优势如何在项目中发挥作用
    2024-08-08
  • 使用SpringBoot中web项目推荐目录结构的问题

    使用SpringBoot中web项目推荐目录结构的问题

    这篇文章主要介绍了SpringBoot中web项目推荐目录结构的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • Java之Spring简单的读取和存储对象

    Java之Spring简单的读取和存储对象

    这篇文章主要介绍了Spring的读取和存储对象,获取 bean 对象也叫做对象装配,是把对象取出来放到某个类中,有时候也叫对象注⼊,想进一步了解的同学可以参考本文
    2023-04-04
  • Java Stream中的Spliterator类概念及原理解析

    Java Stream中的Spliterator类概念及原理解析

    Spliterator是Java 8引入的一个接口,位于java.util包中,它结合了迭代器(Iterator)的遍历能力和分割器(Splitter)的分割能力,本文将详细介绍Spliterator的概念、原理、作用、类中定义的关键方法,以及它在Stream API中的实际应用,感兴趣的朋友一起看看吧
    2024-08-08

最新评论