java - Spring,依赖注入(inject)查询

标签 java spring jakarta-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?

提前致谢。

最佳答案

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

使用<constructor-arg>告诉 Spring 使用 com.springinaction.knights.BraveKnight构造函数,它接受 id quest 引用的 bean 的任何类型的参数是并在构造函数调用中注入(inject)该 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 时将使用该 bean用于创建 id bar 的 bean 的构造函数。请记住,这一切都是通过反射(reflection)完成的。

关于java - Spring,依赖注入(inject)查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20455188/

相关文章:

java - Log4j2配置位置

java - Spring数据CrudRepository和悲观锁

java - Spring Boot 的指标未显示在 Prometheus 中

java - 缓存来自 RMI 的 POJO

java - 如何在 JTextField 中回显字符而不是按下的键

java - 旋转 jlabel java swing

jakarta-ee - Java EE 插件框架

java - 如何防止使用 jodconverter 编辑我的 pdf?

java - "package private"成员访问不是默认(无修饰符)访问的同义词吗?

java - 需要一些帮助来理解注释-Spring注释