从《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?
提前致谢。
最佳答案
您拥有的 XML 片段称为 bean 定义。您正在声明 Spring 可以为您生成的 bean。
使用<constructor-arg>
告诉 Spring 使用 com.springinaction.knights.BraveKnight
构造函数,它接受 id quest
引用的 bean 的任何类型的参数是并在构造函数调用中注入(inject)该 bean。这称为constructor based dependency injection
。 It 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
时将使用该 bean用于创建 id bar
的 bean 的构造函数。请记住,这一切都是通过反射(reflection)完成的。
关于java - Spring,依赖注入(inject)查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20455188/