在另一个组件的构造函数中引用@Autowired组件

时间:2015-11-19 17:06:52

标签: java spring junit autowired

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中的初始化)?

0 个答案:

没有答案