Tengo un bean Singleton Spring que crea un par de tareas (java.util.concurrent.Callable
) en tiempo de ejecución para hacer su trabajo en paralelo. En este momento, los Callable
se definen como clases internas en el bean singleton, y el bean singleton los crea simplemente instanciandolos con new Task(in)
, donde in
es un parámetro conocido solo en tiempo de ejecución.Spring: ¿cómo instanciar un bean Spring que toma un parámetro de tiempo de ejecución?
Ahora quiero extraer la clase Task interna a una clase de nivel superior porque quiero que el método call()
de la Tarea sea transaccional, por lo que necesito que sea un Spring Bean.
Supongo que necesito darle a mi singleton algún tipo de fábrica de Task
s, pero las tareas tienen que ser prototipos Spring beans que toman un valor de tiempo de ejecución como parámetro de constructor. ¿Cómo puedo lograr esto?
@BorisTreukhov: esta no es una pregunta sobre la prueba de aplicaciones de subprocesos múltiples, esta es una pregunta acerca de Spring. De hecho, voy a eliminar la razón # 2 de mi pregunta porque distrae del problema real. –
Ver: http://stackoverflow.com/questions/8772585/spring-bean-with-dynamic-constructor-value – quaylar
@Bossie bien me quita mi comentario, por cierto creo que la forma más sencilla es crear un servicio separado beans, decore sus métodos como transaccionales, inyéctelos a su singleton y pase el parámetro "in" a los métodos de servicio. –