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;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章