1. 程式人生 > 實用技巧 >Springboot學習之 使用@Value()註解給類靜態屬性賦值

Springboot學習之 使用@Value()註解給類靜態屬性賦值

最近在做專案時,需要要工具類中對屬性進行賦值,裡面有過期時間和祕鑰,因為這兩個都是相對固定不會變動的東西,所以配在配置檔案 或者資料庫配置表最好,這邊使用的是配置檔案(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;
}

/***省去其他無關程式碼***/

}
改完後,重新啟動專案,呼叫該工具類,可以得到對應的配置值。