我有一个名为MyInterface
。实现的类MyInterface
(我们称之为MyImplClass
)还实现了Runnable
接口,以便我可以使用它来实例化线程。这是我现在的代码。
for (OtherClass obj : someList) {
MyInterface myInter = new MyImplClass(obj);
Thread t = new Thread(myInter);
t.start();
}
我想要做的是在我的 ApplicationContext.xml 中声明实现类并为每次迭代获取一个新实例。所以我的代码看起来像这样:
for (OtherClass obj : someList) {
MyInterface myInter = // getting the implementation from elsewhere
Thread t = new Thread(myInter);
t.start();
}
如果可能的话,我想仍然保留 IoC 模式。
我怎样才能这样做?
Thanks
您可以尝试使用 spring 范围原型的工厂模式,如下所示。定义一个抽象工厂类,它会给你MyInterface
object
public abstract class MyInterfaceFactoryImpl implements MyInterfaceFactory {
@Override
public abstract MyInterface getMyInterface();
}
然后定义 Spring bean.xml 文件,如下所示。请注意myinterface
bean 被定义为原型(所以它总是会给你新的实例)。
<bean name="myinterface" class="com.xxx.MyInterfaceImpl" scope="prototype"/>
然后用工厂方法名称定义factorybean。
<bean name="myinterfaceFactory" class="com.xxx.MyInterfaceFactoryImpl">
<lookup-method bean="myinterface" name="getMyInterface" />
</bean>
现在你可以打电话myinterfaceFactory
获取新实例。
for (OtherClass obj : someList) {
MyInterface myInter = myInterfaceFactory.getMyInterface();
Thread t = new Thread(myInter);
t.start();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)