Springboot學習之 使用@Value()註解給類靜態屬性賦值
阿新 • • 發佈:2020-12-10
最近在做專案時,需要要工具類中對屬性進行賦值,裡面有過期時間和祕鑰,因為這兩個都是相對固定不會變動的東西,所以配在配置檔案 或者資料庫配置表最好,這邊使用的是配置檔案(application.yml),然後通過@Value()屬性注入到對應的屬性中。
剛開始在做的時候,啟動專案後發現通過使用@Value註解對這兩個屬性進行賦值,結果兩個都注不進去。
這個讓我很苦惱,通過查詢資料。找到了通過set的辦法進行注入,併成功。
解決辦法:
1.將這兩個私有屬性的set方法從私有變成公開(private -->>> public);
2.生成這兩個靜態屬性的set方法;
3.將原來在靜態屬性上的@Value() 註解改到設在 set方法上;
4.去除這兩個靜態屬性set方法的static關鍵字
類上面的@Compoent 註解一定要有。
最終結果如下:
@Component
public class JwtUtil {
/** * 過期時間,單位毫秒 */ private static long EXPIRE_TIME ; /** * token祕鑰 */ private static String TOKEN_SECRET ; @Value("${jwt.expire-time}") public void setExpireTime(long expireTime) { EXPIRE_TIME = expireTime; } @Value("${jwt.secret}") public void setTokenSecret(String tokenSecret) { TOKEN_SECRET = tokenSecret; } /***省去其他無關程式碼***/
}
改完後,重新啟動專案,呼叫該工具類,可以得到對應的配置值。