Spring注解之@Value基于Apollo或者YAML文件为静态变量赋值
摘要:Spring Boot微服务中,把在Apollo配置中心或者YAML文件里配置的属性赋值给静态变量。
综述
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
需求背景:假设自己的项目已经使用了Apollo,需要修改配置,并且,想要为静态属性赋值。
小编楼兰胡杨在《Spring注解之@Value注解读取配置文件属性》中,介绍了如何为非静态属性赋值,如何为List、Map和Array类型的变量赋值。接下来,本文以 ReadApolloConfig 代码为例,演示如何为静态属性赋值。
为静态变量赋值
基于注解@Value、@Component和@EnableApolloConfig注入配置,@Value注解可以实时更新配置。
@Component
@EnableApolloConfig
public class ReadApolloConfig {
private static String userName;
// setUserName不可由static修饰
@Value("${self.user.name}")
private void setUserName(String userName) {
userName = userName;
}
public static String getUserName() {
return userName;
}
}
其中,使用@Value为静态变量userName赋值。对于静态属性 userName,我们直接使用@Value注解是不生效的,但是可以将@Value("${self.user.name}")注解添加到非静态setter方法 setAddress(String userName)上面,使得在参数注入的时候,将 Apollo 配置中心或者yaml配置文件中配置的值传递给静态属性userName,然后通过静态方法getUserName()获取静态属性的值。
测试用例
@RestController
@RequestMapping("/test")
public class Test {
@GetMapping("/test1")
public String test1() {
readVale();
return "hello world!";
}
private static void readVale() {
System.out.println(ReadApolloConfig.getUserName());
}
}
结束语
文章到这里就结束了,看完之后你有什么想法想要跟大家分享呢?评论区在等着你!
人生犹如跑长跑,当中会有一段很困难的时期,如果放弃就输了整个比赛,但如果锲而不舍,就有赢的希望。对于大多数平凡如你我的人而言,没有什么捷径,谁能坚持到最后,谁就笑得更灿烂。
读后有收获,小礼物走一走,请作者喝咖啡。

作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。
标签:
Spring Boot
, Spring 注解
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南