Spring 中使用工厂方法进行依赖注入

2024 年 8 月 29 日 | 阅读 3 分钟

Spring 框架提供了使用工厂方法注入 bean 的功能。为此,我们可以使用 bean 元素的两个属性。

  1. factory-method: 表示将要被调用的工厂方法来注入 bean。
  2. factory-bean: 表示将要被调用的工厂方法的 bean 引用。 如果工厂方法是非静态的,则使用它。

返回类实例的方法称为 工厂方法

工厂方法类型

工厂方法可以有三种类型

1) 返回 自身 类实例的 静态工厂方法。它在单例设计模式中使用。

2) 返回 另一个 类实例的 静态工厂方法。它在运行时实例未知并确定时使用。

3) 返回 另一个 类实例的 非静态工厂方法。它在运行时实例未知并确定时使用。


类型 1

让我们看看通过静态工厂方法注入依赖项的简单代码。

让我们看看在 spring 中使用工厂方法注入依赖项的完整示例。 为了创建此示例,我们创建了 3 个文件。

  1. A.java
  2. applicationContext.xml
  3. Test.java
A.java

此类是单例类。

applicationContext.xml
Test.java

此类从 applicationContext.xml 文件获取 bean 并调用 msg 方法。

输出

private constructor
factory method
hello user

类型 2

让我们看看通过静态工厂方法注入依赖项的简单代码,该方法返回另一个类的实例。

要创建此示例,我们创建了 6 个文件。

  1. Printable.java
  2. A.java
  3. B.java
  4. PrintableFactory.java
  5. applicationContext.xml
  6. Test.java
Printable.java
A.java
B.java
PrintableFactory.java
applicationContext.xml
Test.java

此类从 applicationContext.xml 文件获取 bean 并调用 print() 方法。

输出

hello a

Type 3

让我们看看通过非静态工厂方法注入依赖项的示例,该方法返回另一个类的实例。

要创建此示例,我们创建了 6 个文件。

  1. Printable.java
  2. A.java
  3. B.java
  4. PrintableFactory.java
  5. applicationContext.xml
  6. Test.java

所有文件与之前相同,您只需要更改 2 个文件:PrintableFactory 和 applicationContext.xml。

PrintableFactory.java
applicationContext.xml

输出

hello a
下一个主题Spring AOP 教程