2013-12-08 90 views
0

从书“春天行动”,我看到这个XML配置文件:春天,依赖注入查询

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

到底是什么<constructor-arg ref="quest" />?这是否意味着每次我将构建函数中的任务作为参考调用时,都会获取BraveKnight?

在此先感谢。

回答

4

您拥有的XML片段称为bean定义。你正在声明一个Spring可以为你生成的bean。

使用<constructor-arg>告诉Spring使用com.springinaction.knights.BraveKnight构造函数接受任何类型由ID quest引用的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 bean将ID为foo创建。调用Bar构造函数创建ID为bar的bean时,将使用该bean。请记住,这一切都是通过反思完成的。

+0

+1,我会给它一个简单的代码示例。它会使未知更清晰。 –