0

我有如下代码:

MyContext context = new MyContext();
context.start();
MyEntity entity =  context.getEntity();

我想将 MyEntity 实例注入到各种类中。但我不知道如何设置我的 Spring 配置,我首先创建一个对象,然后在其上调用一个方法,然后最后调用另一个返回我要注入的实体的方法。

编辑 2 - 完全删除了字符串

4

1 回答 1

2

使用 Spring 注入的最常见的依赖类型不依赖于用户输入来构建它们。这包括数据访问对象、服务等,

您正在谈论注入其构造直接或间接依赖于用户输入的域对象。

Spring 提供@Configurable注解来注入使用运算符创建的此类域对象new。您可以在 Internet 上搜索“@Configurable Domain Driven Design”以获取有关如何实现此功能的示例。我自己在我的一个应用程序中使用了它,并在这里写了一篇简单的文章,可能会帮助您入门。

编辑

要根据更新问题中的规范创建 MyEntity 类型的 bean,您需要

  • 定义一个 MyContext 类型的 bean
  • 创建一个依赖于 MyContext bean 的 MyEntityFactory 类。
  • 工厂方法将 MyContext bean 作为参数,调用context.start()它并返回 MyEntity 的一个实例。
  • 您将使用这个工厂类定义 MyEntity bean。

MyEntityFactory 类如下所示:

public class MyEntityFactory
{
    public static MyEntity getMyEntity(MyContext context)
    {
        context.start();
        return context.getEntity();
    }
}

spring bean 配置如下:

<bean id="myContext" class="FQCN.Of.MyContext" />
<bean id="myEntity" class="FQCN.Of.MyEntityFactory" factory-method="getMyEntity">
    <constructor-arg ref="myContext" />
</bean>

由于MyEntity是单例 bean,工厂方法只会被调用一次,顺便说一句。

更多关于使用工厂方法创建 bean 的信息

于 2012-12-01T16:50:18.640 回答