Spring的@Value注解为静态变量赋值

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;
    }
}
-------------已经触及底线 感谢您的阅读-------------
原文地址:https://www.cnblogs.com/cnsyear/p/12913468.html