SpringBoot中静态变量注入方案,一网打尽
前言
Hi,一网打尽大家好,我是麦洛,昨天同事来找我。说自己想使用@Value注解来注入值,中静但是发现注入不进去,想让我帮忙看看。研究了一番,态变最后发现是@Value注解无法注入静态变量。下面我们一起来回顾一下本次的量注bug。
普通变量
首先我们来看看。入方如何给普通变量注入值?一网打尽
例如,application-dev.yml 配置文件有如下配置:

给普通变量赋值时,中静直接在变量声明之上添加@Value()注解即可,态变如下所示:

这个大家应该很熟悉了,量注这里就不再赘述。云服务器
静态变量
我们来看看昨天的入方问题,我们想给项目中的文件上传封装一个工具类。阿里云oss的一网打尽相关信息我们配置在配置文件中,需要将信息注入到工具类中的变量。为了方便直接使用变量,中静我们把把变量定义为静态变量。当要给静态变量注入值的态变时候,若是量注在静态变量声明之上直接添加@Value()注解是无效的服务器租用。如下图所示。入方


解决方案
方案一
若要给静态变量赋值,可以使用set()方法注入。
类上加入@Component注解 @Value注解标记set方法 方法名(例如setOssUrl)和参数名(例如ossUrl)可以任意命名如下所示:

方案二
如果你觉得@value注解麻烦。可以使用@ConfigurationProperties注解代替,这样比较简洁
前缀要写合适 方法名(例如setOssUrl)必须和属性保持一致,例如写为setUrl()会注入失败 类上加入@Component注解

方案三
类上加入@Component注解 @PostConstruct注解修饰的方法中进行赋值操作
使用场景
那么问题来啦!我们什么场景下需要把值注入到静态变量?
场景一

场景二
工具类中将值注入静态变量,就可以直接在静态方法之中使用,我本文中遇到的正是这个场景
总结
本文中,我们从一个实际问题出发,探寻了三种在springboot中静态变量注入方案,希望对大家有所帮助。
本文转载自微信公众号「爱写Bug的麦洛」

相关文章
电脑星际战甲注册教程(让你在星际战甲中畅快享受战斗乐趣的详细指南)
摘要:作为一款备受瞩目的电脑游戏,电脑星际战甲一直以其精美的画面和刺激的玩法吸引着众多玩家。而要开始在这个世界中展开你的冒险之旅,首先你需要进行游戏的注册。本文将为大家详细介绍电脑星际战...2025-11-05- 复制./configure make makeinstall 1.2.3.4.5.6.2025-11-05
最近出的每日一题里面,有一道是关于合并同类型数据为一行的题,使用SQL Server 2017版本及以上的直接使用STRING_AGG()函数即可,但是2016版本以下是没有这个功能的,那该如何求解?2025-11-05
数据库中常见的六种约束,有一种MySql不支持,你知道是哪个吗?
数据库中的约束,顾名思义即是对插入数据库中的数据进行了一定的限定,这样做的目的是为了保证数据的完整性和有效性。这样会大幅度地提升数据库中数据的质量,节省数据库空间和提高运行效率。那么,常见的数据库约束2025-11-05教你简易转换安卓手机m4a音频为mp3格式(一键操作,高效转换,享受更广泛的音频播放体验)
摘要:随着移动设备的普及,我们经常使用安卓手机来播放和保存音频文件。然而,由于某些原因,有时候我们可能会遇到一些不支持m4a格式的音频播放器。为了解决这一问题,本文将向大家分享如何简易地...2025-11-05- 零散检测和响应 (PDR) 可以通过多种方式体现。PDR 最常见的症状包括:多种安全信息和事件管理 (SIEM)工具例如,一种本地工具和一种云端工具)花费太多时间或精力来集成检测系统性能不佳的安全编排2025-11-05


最新评论