Spring Batch
Spring Batch es el framework para procesamiento de lotes de Spring Framework. Este framework apunta a crear una plataforma que brinde servicios comunes para los programas batch.
Contenido
Arquitectura básica
El elemento principal de Spring Batch es el Job (Trabajo). Un Job representa un procesamiento batch a ejecutar. Un Job está compuesta de varios Step (Pasos), que se ejecutan en forma secuencial.
El mismo Job puede configurarse con distintos parámetros que lo diferencian (por ejemplo, la fecha de ejecución). Esto se conoce como JobInstance. Así, un JobInstance es la particularización de un Job con un conjunto de datos determinados.
La ejecución de un JobInstance es un JobExecution. Así, un JobInstance puede tener asociados muchos JobExecution, uno por cada intento de ejecución (por ejemplo, 2 intentos fallidos y uno exitoso).
Además, Spring Batch lleva un registro de todas las ejecuciones y parámetros con las que se lanzaron los Job. El encargado de guardar estos registros es el JobRepository, que cuenta con una implementación para almacenar la información en una base de datos. Spring Batch utiliza un modelo de tablas propio para guardar la información de las corridas, tiempos, parámetros de invocación, pasos que se ejecutaron y otros datos.
Por último, el encargado de ejecutar los Job se llama JobLauncher.
Los Step
Un Job está compuesto de varios Step que se ejecutan, inicialmente, de manera secuencial. El Step más común es el implementado por la clase SimpleStepFactoryBean, o por la clase TaskletStep.
SimpleStepFactoryBean
Esta clase crea Steps que constan de un "lector de datos" (ItemReader) y un "procesador de datos" (ItemWriter).
El ItemReader será un bean encargado de leer datos de algún origen. Cada dato leído será pasado al ItemWriter para su procesamiento.
Existen varias implementaciones de ItemReader y ItemWriter que ya trae Spring Batch. Estas implementaciones resuelven accesos comunes, como ser leer de una base de datos, lectura/escritura en archivos de texto, etc.
Además, es muy simple implementar un ItemReader o ItemWriter propio.
TaskletStep
Un Tasklet es una acción muy básica en Spring Batch, y se usa para realizar ejecuciones simples. Un Step que ejecuta un tasklet se implementa con la clase TaskletStep.