spring框架下@value註解屬性static無法獲取值問題
@value註解屬性static無法獲取值
@Value("${appId}") private static String appid;
這樣是無法直接獲得值的
解決辦法
需要這樣寫
private static String appid; @Value("${appId}") public void setAppid(String appId) { this.appid = appid; }
@Value註解取不到值的幾種情況
在spring的框架中,我們經常使用@Value註解來獲取定義在application.properties的屬性值,正常情況下是可以輕松的獲取到值的,但是有幾種特殊情況下是獲取不到值的,在這記錄下,以防止以後犯錯誤。正常獲取的用法如下:
在application.properties中定義一個屬性值:
正常情況下在代碼裡面這樣獲取:
@Value("${ftpIP}") private String ftpIP;
幾種獲取不到值的特殊情況如下
情況一:使用static或者final修飾瞭tagValue
@Value("${ftpIP}") private static String ftpIP; @Value("${ftpUserName}") private final String ftpUserName;
情況二:用該註解的類上面沒有加註解,即不能被spring管理
public class FTPManagerService { @Value("${ftpIP}") private static String ftpIP; }
情況三:類被new新建瞭實例,而沒有使用@Autowired
public class FTPManagerService { @Value("${ftpIP}") private static String ftpIP; } public class Test{ /*錯誤用法*/ FTPManagerService f = new FTPManagerService (); /*正確用法*/ @Autowired FTPManagerService f2; }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- SpringBoot之@Value獲取application.properties配置無效的解決
- springboot如何使用@ConfigurationProperties封裝配置文件
- spring boot項目application.properties文件存放及使用介紹
- 手擼一個 spring-boot-starter的全過程
- spring@value註入配置文件值失敗的原因分析