我有如下代码:
MyContext context = new MyContext();
context.start();
MyEntity entity = context.getEntity();
我想将 MyEntity 实例注入到各种类中。但我不知道如何设置我的 Spring 配置,我首先创建一个对象,然后在其上调用一个方法,然后最后调用另一个返回我要注入的实体的方法。
编辑 2 - 完全删除了字符串
我有如下代码:
MyContext context = new MyContext();
context.start();
MyEntity entity = context.getEntity();
我想将 MyEntity 实例注入到各种类中。但我不知道如何设置我的 Spring 配置,我首先创建一个对象,然后在其上调用一个方法,然后最后调用另一个返回我要注入的实体的方法。
编辑 2 - 完全删除了字符串
使用 Spring 注入的最常见的依赖类型不依赖于用户输入来构建它们。这包括数据访问对象、服务等,
您正在谈论注入其构造直接或间接依赖于用户输入的域对象。
Spring 提供@Configurable
注解来注入使用运算符创建的此类域对象new
。您可以在 Internet 上搜索“@Configurable Domain Driven Design”以获取有关如何实现此功能的示例。我自己在我的一个应用程序中使用了它,并在这里写了一篇简单的文章,可能会帮助您入门。
编辑:
要根据更新问题中的规范创建 MyEntity 类型的 bean,您需要
context.start()
它并返回 MyEntity 的一个实例。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 的信息。