参考地址:http://blog.csdn.net/xiekuntarena/article/details/70242496
背景:
1、在使用SpringMVC框架的时候,难免会有需要在静态方法中使用Spring的bean的情况。
2、静态方法,不能直接引用注入的bean,而注入的bean也不可以标识为static。
解决方案:
通过一个中间介质,将注入的bean,传入静态方法。
关键字:
@PostConstruct 注解
示例代码:
@Bean
class HostInfo {
private int port;
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
@Component
public class CommonUtil {
@Autowired
private HostInfo hostInfo;
private static CommonUtil commonUtil;
// 通过init方法:
// 1.注入bean(hostInfo)
// 2.赋值给commonUtil
// 3.使用hostInfo的时候,就通过commonUtil来取
@PostConstruct
public void init() {
commonUtil = this;
commonUtil.hostInfo = this.hostInfo;
}
public static int getHostPort() {
return commonUtil.hostInfo.getPort();
}
}