Bean是在创建对象时加载依赖的,而静态变量是属于类属性,是优先于对象属性加载的,因此Bean是无法注入静态变量的,被标记的静态变量值为null,当然也无法在静态方法中使用Bean对象。
如果要在静态方法中使用Bean对象,那么需要将加载完成的Bean手动赋值给静态变量再通过静态变量来使用。
假设现有两个类A、B,A被标记为Bean了,现在要在B的静态方法中使用依赖注入的A对象。基于之前的思路有如下三种方式:
方法1:使用@PostConstruct
@Component
public class B {
private A a;
private static B b;
@Autowired
public B(A a) {
this.a = a;
}
@PostConstruct
public void init() {