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

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

有时候我们需要把配置文件中的变量注入给工具类中的静态变量,这时候我们直接在写变量上@Value(“${sys.proxy.host}”)是注入不了静态变量的值始终是null。

1
2
@Value("${sys.proxy.host}")
public static String host;

其原因是Spring不允许/不支持把值注入到静态变量中。

解决方法

Spring支持set方法注入,我们可以利用非静态set方法注入静态变量。

  • 创建set方法,注意要去除static修饰符
  • 类需要有@Component或者@Service等注解扫描
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@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;
}
}
-------------已经触及底线 感谢您的阅读-------------

本文标题:Spring的@Value注解为静态变量赋值

文章作者:趙小傑~~

发布时间:2019年07月17日 - 22:23:32

最后更新:2019年07月26日 - 23:32:12

原始链接:https://cnsyear.com/posts/dd5d73c3.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%