最近在做項目時,需要要工具類中對屬性進行賦值,里面有過期時間和秘鑰,因為這兩個都是相對固定不會變動的東西,所以配在配置文件 或者數據庫配置表最好,這邊使用的是配置文件(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;
}
/***省去其他無關代碼***/
}
改完后,重新啟動項目,調用該工具類,可以得到對應的配置值。