一、背景
在 spring 的框架中,我们经常使用 @Value 注解来获取定义在 application.properties 的属性值,正常情况下是可以轻松的获取到值的,但是有几种特殊情况下是获取不到值的,在这记录下,以防止以后犯错误。
二、正确方式
正常获取的用法如下:在 application.properties 中定义一个属性值:
ftpIp=10.86.6.214
获取方式如下:
@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;
}