【发布时间】:2012-02-24 11:10:02
【问题描述】:
我有一个单例 Spring bean,它在运行时创建几个任务 (java.util.concurrent.Callable's) 以并行完成其工作。现在,Callable 被定义为单例 bean 中的内部类,单例 bean 只需使用 new Task(in) 实例化它们即可创建它们,其中 in 是仅在运行时才知道的参数。
现在我想将内部的 Task 类提取到一个常规的顶级类,因为我想让 Task 的 call() 方法具有事务性,所以我需要它是一个 Spring bean。
我想我需要给我的单例一些Tasks 的工厂,但任务必须是原型 Spring bean,它以运行时值作为构造函数参数。我怎样才能做到这一点?
【问题讨论】:
-
@BorisTreukhov:这不是关于测试多线程应用程序的问题,而是关于 Spring 的问题。事实上,我将从我的问题中删除原因 #2,因为它分散了真正问题的注意力。
-
@Bossie 好的,我删除了我的评论,顺便说一句,我认为最简单的方法是创建单独的服务 bean,将它们的方法装饰为事务性,将它们注入你的单例并将“in”参数传递给服务方法。
标签: java spring parameters prototype