关于spring:注入依赖关系

Injecting dependencies

依赖项注入(DI)背后的基本原理是,对象仅通过构造函数参数、工厂方法的参数或从工厂方法构造或返回后在对象实例上设置的属性来定义其依赖项(也就是说,它们使用的其他对象)。

这到底是什么工厂方法?


请看一下这个Spring参考文档部分的最后一个示例。

这是示例:

1
2
3
4
5
6
7
8
<bean id="exampleBean" class="examples.ExampleBean" factory-method="createInstance">
    <constructor-arg ref="anotherExampleBean"/>
    <constructor-arg ref="yetAnotherBean"/>
    <constructor-arg value="1"/>
</bean>

<bean id="anotherExampleBean" class="examples.AnotherBean"/>
<bean id="yetAnotherBean" class="examples.YetAnotherBean"/>

示例bean类:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ExampleBean {

// a private constructor
private ExampleBean(...) {
    ...
}

// a static factory method; the arguments to this method can be
// considered the dependencies of the bean that is returned,
// regardless of how those arguments are actually used.
public static ExampleBean createInstance (
    AnotherBean anotherBean, YetAnotherBean yetAnotherBean, int i) {

    ExampleBean eb = new ExampleBean (...);
    // some other operations...
    return eb;
}

}

因此,bean的实例是使用同一bean内的工厂方法创建的。依赖注入是通过将其他bean作为参数传递给工厂方法来实现的。


工厂方法是用于对象创建的设计模式。工厂方法定义了一个用于创建对象的接口,但是让子类决定要实例化哪些类。有关更多信息,请阅读此处。