在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;
}