为什么不推荐在Spring Boot中使用@Value加载配置

公众号程序猿DD

共 1909字,需浏览 4分钟

 ·

2024-05-21 08:30

@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;

}

这就轻松实现配置的校验了,是不是很方便呢?

今天的分享就到这里,如果本文对你有帮助,欢迎一键三连。

我们创建了一个高质量的技术交流群,与优秀的人在一起,自己也会优秀起来,赶紧点击加群,享受一起成长的快乐。




你还在购买国内的各种昂贵又低质的技术教程吗?这里给大家推荐下我们自研的Youtube视频语音转换插件(https://youtube-dubbing.com/),一键外语转中文,英语不好的小伙伴也可以轻松的学习油管上的优质教程了,下面是演示视频,可以直观的感受一下:
如果您觉得这款插件不错,也可以推荐给您身边的朋友,目前我们开通了分享赚钱功能,只要安装本插件登录注册之后,获取邀请链接,放到你的博客侧边栏、友情链接或者发到朋友圈、微博、X等社交平台,就能获得积分,积分现在是可以i直接提现的哦~



推荐阅读

Java 经典《Core Java》速学版来了!
三个实用开源项目工具:无代码编辑器
JetBrains 全家桶 2024 首个大版本更新
如何在 Java 中读取处理超过内存大小的文件

点击阅读原文,直达Java新特性专栏

浏览 537
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
1点赞
评论
收藏
分享

手机扫一扫分享

分享
举报