Spring的@Value注解为静态变量赋值
有时候我们需要把配置文件中的变量注入给工具类中的静态变量,这时候我们直接在写变量上@Value("${sys.proxy.host}")是注入不了静态变量的值始终是null。
@Value("${sys.proxy.host}")
public static String host;
其原因是Spring不允许/不支持把值注入到静态变量中。
解决方法
Spring支持set方法注入,我们可以利用非静态set方法注入静态变量。
- 创建set方法,注意要去除static修饰符
- 类需要有@Component或者@Service等注解扫描
@Component
public class TouTiaoTool {
private static String host;
private static int port;
public String getHost() {
return host;
}
@Value("${sys.proxy.host}")
public void setHost(String host) {
TouTiaoTool.host = host;
}
public int getPort() {
return port;
}
@Value("${sys.proxy.port}")
public void setPort(int port) {
TouTiaoTool.port = port;
}
}