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。

推薦閱讀: