Spring,依赖注入查询

时间:2013-12-08 15:34:37

标签: java spring java-ee

从“Spring in Action”一书中,我看到了这个配置xml文件:

<bean id="knight" class="com.springinaction.knights.BraveKnight">
<constructor-arg ref="quest" />
Inject quest bean
</bean>

究竟是什么<constructor-arg ref="quest" />?这是否意味着每次我在构造函数中调用quest作为引用时它会获取一个BraveKnight?

提前致谢。

1 个答案:

答案 0 :(得分:4)

您拥有的XML代码段称为 bean定义。您正在声明Spring可以为您生成的bean。

使用<constructor-arg>告诉Spring使用com.springinaction.knights.BraveKnight构造函数,该构造函数接受id quest引用的bean的任何类型的参数,并在构造函数调用中注入该bean。这称为constructor based dependency injectionIt is covered here.

给出两个班级

class Foo {}

class Bar {
    private Foo foo;
    public Bar (Foo foo) {
        this.foo = foo;
    }
}

以及以下bean定义

<bean id="foo" class="Foo" />

<bean id="bar" class="Bar">
    <constructor-arg ref="foo">
</bean>

将创建一个标识为Foo的{​​{1}} bean。在调用foo构造函数来创建标识为Bar的bean时,将使用该bean。请记住,这一切都是通过反思完成的。