:::: MENU ::::

Spring Batch

Creación del proyecto con Spring Boot

Vamos a https://start.spring.io/ y generamos un proyecto Spring Boot con Batch y HSQLDB (que es una base de datos embebida para persistir los metadatos de las operaciones Batch). Lo descargamos y lo importamos como proyecto Maven en nuestro Eclipse.

Job, Step y Tasklet

Ahora creamos un nuevo componente con dos propiedades que Spring auto-instanciará: una del tipo JobBuilderFactory y otra del tipo StepBuilderFactory.

Creamos un Step usando la anterior factoría y creamos un Tasklet (una interfaz que sirve para hacer algo simple), el cual imprimirá en la consola una cadena de texto.

Después, creamos un Job, que lanzará el anterior Step.

MyJobConfig.java

package com.luisgomezcaballero.springbatchdemo;

import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.annotation.JobBuilderFactory;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@EnableBatchProcessing
public class MyJobConfig {

	@Autowired
	private JobBuilderFactory jobBuilderFactory;
	
	@Autowired
	private StepBuilderFactory stepBuilderFactory;
	
	@Bean
	public Step myStep() {
		return stepBuilderFactory.get("myStep").tasklet(new Tasklet() {
			
			@Override
			public RepeatStatus execute(StepContribution arg0, ChunkContext arg1) throws Exception {
				System.out.println("myTasklet");
				return RepeatStatus.FINISHED;
			}
		}).build();
	}
	
	@Bean
	public Job myJob() {
		return jobBuilderFactory.get("myJob").start(myStep()).build();
	}
	
}

Demostración

Clic derecho sobre SpringBatchApplication, Run As, Java Application. Se ejecutarán los jobs que hayamos especificado y podremos ver nuestro mensaje en la consola.

Repositorio

El código de este proyecto de demostración puede encontrarse en https://github.com/luisgomezcaballero/spring-batch-demo.


So, what do you think ?