問題出在一次在工具類中使用靜態變量請求外部接口時一直訪問失敗,經過排查發現,秘鑰的值為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;
}