Spring组件的构造函数可以引用@Autowired组件,还是自动装配发生得太晚了?
我有一个例子:
@Component
public class A {
public A() { ... }
...
}
@Component
public class B {
@Autowired A a;
public B() {
some code using a.getThisOrThat() ... // fails, a is null
}
}
并在配置文件中:
<bean id="a" class="some.packagename.A" />
<bean id="b" class="some.packagename.B" depends-on="a" />
我已经确认使用System.out.println
在B&B之前调用了A的构造函数;但是,在B&#39的构造函数中,a
为空。我使用SpringJUnit4ClassRunner
将其作为JUnit单元测试运行。如果我将B
中的初始化推迟到第一次调用另一个方法,那么它可以正常工作 - a
已经设置好。
这是预期的行为吗?
使用SpringJUnit4ClassRunner
时行为是否可能不同?
有没有办法让它工作(除了推迟B
中的初始化)?