springBoot 獲取yml 文件中的參數給靜態全局變量傳值問題


問題出在一次在工具類中使用靜態變量請求外部接口時一直訪問失敗,經過排查發現,秘鑰的值為null ,而秘鑰是靜態的只是從yml 文件中獲取的。沒有獲取到,但其中另一個方法從yml 文件中獲取的值卻獲取到了@value() 方法在不是靜態變量的時候起效,在靜態變量是不起效了。

原因及解決方法:springBoot 加載時靜態變量會先加載,導致沒有賦值。

解決方法:定義另外一個非靜態的變量,並賦值,編寫構造器,或 set 方法,使用@PostConstruct 注解賦值

private static String APP_KEY;

private static String SECRET_KEY;
@Value("${appkey}")
private String aa;

@Value("${secretkey}")
private String bb;

@PostConstruct
public void setAppKey() {
HttpUtil.APP_KEY = this.aa;
HttpUtil.SECRET_KEY = this.bb;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM