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());
}
}
結束語
??文章到這里就結束了,看完之后你有什么想法想要跟大家分享呢?評論區在等著你!
??人生猶如跑長跑,當中會有一段很困難的時期,如果放棄就輸了整個比賽,但如果鍥而不舍,就有贏的希望。對于大多數平凡如你我的人而言,沒有什么捷徑,誰能堅持到最后,誰就笑得更燦爛。
讀后有收獲,小禮物走一走,請作者喝咖啡。
Buy me a coffee. ?Get red packets.作者:樓蘭胡楊
本文版權歸作者和博客園共有,歡迎轉載,但請注明原文鏈接,并保留此段聲明,否則保留追究法律責任的權利。

浙公網安備 33010602011771號