如何在这种情况下执行构造函数注入?

时间:2014-10-23 09:37:57

标签: java spring inversion-of-control constructor-injection

假设我们有一个名为A.java的类。在A.java类中,我们有一个默认的构造函数

A(){
}

并且一个自定义构造函数具有类似

的参数
A(B b){
super(b);
}

现在,C类正在扩展A类以使用A类的getter。 C再次有一个构造函数,其中包含一个参数,如

C(A a)
{
 this.a = a;
}

我们再次有一个D类,在这里我们有一个像

这样的构造函数
D(C c )
{this.c = c;
}

现在我的问题是我们如何在这种情况下进行弹簧施工注射?

1 个答案:

答案 0 :(得分:0)

以下是我写的背景信息:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd">

    <bean id="a" class="com.my.springtest.A">
        <constructor-arg ref="b"/>
    </bean>

    <bean id="b" class="com.my.springtest.B"/>

    <bean id="c" class="com.my.springtest.C">
        <constructor-arg ref="a"/>
    </bean>

    <bean id="d" class="com.my.springtest.D">
        <constructor-arg ref="c"/>
    </bean>

</beans>

保存此文件并将其放入类路径中(例如,如果使用maven,则为src / main / resources)。然后你可以在junit中创建这个上下文:

@ContextConfiguration(locations = { "classpath:/test-context.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringTest {

    @Autowired
    private D d;

    @Test
    public void testBean() {
        Assert.assertNotNull(d);
    }
}