Spring配置调用多个方法

时间:2012-12-01 13:19:24

标签: spring dependency-injection

我的代码如下所示:

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

Spring提供@Configurable注释来注入使用new运算符创建的域对象。您可以在互联网上搜索“@Configurable Domain Driven Design”,以获得如何实现此功能的示例。我自己在我的应用程序中使用它并写了一篇简单的帖子here,可能会帮助你开始。

修改

要根据更新后的问题中的规范创建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,因此工厂方法只会被调用一次,顺便说一句。

有关使用工厂方法here创建bean的更多信息。