2012-09-10 22 views
9

Solo quiero saber si hay un alcance "JOB" en el lote de primavera, como el alcance "STEP"? Si no es así, ¿debemos desarrollar nuestro alcance personalizado o existe una mejor alternativa?¿Hay un alcance de "trabajo" por lotes de primavera?

Gracias de antemano.

+0

¿Puede ampliar su pregunta con más detalles sobre lo que desea lograr? –

+0

He creado un dataHolder bean para compartir datos entre diferentes pasos del Trabajo. Mi trabajo, podría ser ejecutado asíncronamente por múltiples hilos, por lo que para los requisitos de seguridad de hilos, yo quería crear un bean DataHolder por cada trabajo ejecutado. –

Respuesta

0

si su dataHolder bean mantiene el estado puede intentarlo con un bean scope adecuado p. Ej. prototipo

+0

Pero con el alcance del prototipo, cada vez que haré referencia a mi dataHolder bean desde un paso de trabajo, ¿se creará un nuevo bean? A mí, me gustaría usar el mismo dataHolder Bean de todos los pasos de un determinado trabajo. –

+0

Todavía no estoy muy seguro sobre su uso, pero se puede lograr un estado compartido de seguridad simple con http://docs.oracle.com/javase/tutorial/essential/concurrency/syncmeth.html –

+0

Gracias michael por su ayuda, para resolver mi problema, finalmente creo un dataHolderResolver Bean (Singleton), que contiene el método getDataHolder (int jobId) devolviendo el DataHolder asociado al indIdo dado. Decidí que mi dataHolder Bean era un prototipo, y utilicé la función de primavera del método de búsqueda en el bean dataHolderResolver, para obtener una nueva referencia de DataHolder, si aún no se ha creado y almacenado en caché para un jobId dado. Pero, creo que será útil tener el alcance de "trabajo" en la próxima versión del lote de Spring. –

6

Una jira se ha abierto hace unos momentos en el rastreador cuestiones lotes de resorte con respecto a este tema: https://jira.springsource.org/browse/BATCH-1701

Una solicitud de extracción se ha presentado así, es de esperar que se fusionan pronto, porque tengo este uso también aquí: https://github.com/SpringSource/spring-batch/pull/41

Existen múltiples soluciones en el momento, cada uno con su inconveniente, ver esta respuesta en stackoverflow: https://stackoverflow.com/a/8121102/470107

+0

Gracias Raphael;) –

+0

Creo que el tercer enlace es la forma correcta de hacerlo: tiene un "alcance de ejecución de trabajo", que es mejor que un ámbito de "trabajo" si desea tener cada hilo aislado con sus propios datos –

Cuestiones relacionadas