Demo #9: leer archivos con cabecera y compartir datos entre etapas de un Step

La demo del paquete demo9 contiene un ejemplo para leer archivos planos en los que se recibe una primera línea “cabecera” con datos generales del archivo y/o comunes a todos los registros, y las siguientes líneas son los registros que deben ser procesados individualmente.

Además veremos cómo se comparte información entre el reader y el writer, utilizando el contexto del step.

Las clases

Para esto deberemos desarrollar dos clases:

  • CabeceraHandler, maneja el registro cabecera, leyéndolo y creando con sus datos el objeto de tipo CabeceraArchivo que se compartirá entre el reader y el writer. Para compartirlo lo guarda en el contexto del step. Este contexto lo setea spring-batch al encontrar en un método la anotación @BeforeStep. Además es necesario que el bean esté declarado como listener en el step.
  • ConsolaItemWriter, cuyo bean también está declarado como listener del step, utiliza en esta ocacion los datos de la cabecera para imprimir por consola.

La configuración

En el archivo de configuración spring-batch-demo.xml se ecuentra toda la configuración necesaria para Spring Batch. Los beans importantes declarados en este archivo:

  • cabeceraHandler, es el CabeceraHandler que se encarga de manipular la cabecera y dejarla disponible para el writer.
  • cabeceraArchivo, es el nuevo bean en el que se mapeará el registro cabecera.