摘要: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;
@Value("${self.user.name}")
public 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());
}
}
结束语
文章到这里就结束了,看完之后你有什么想法想要跟大家分享呢?评论区在等着你!
人生犹如跑长跑,当中会有一段很困难的时期,如果放弃就输了整个比赛,但如果锲而不舍,就有赢的希望。对于大多数平凡如你我的人而言,没有什么捷径,谁能坚持到最后,谁就笑得更灿烂。
标签:userName,静态,Spring,Value,YAML,注解,Apollo,赋值 From: https://www.cnblogs.com/east7/p/16839178.html