Cet article fait suite aux précédents posts sur TDD et BDD avec Spring Batch.

Le but est de packager et exécuter directement un batch Spring Batch sans ajout de configuration spécifique de packaging ni d’installation préalable d’environnement d’exécution particulier.

Le projet Github springbatch-sample montre comment Spring Boot permet de construire de manière simple un livrable auto exécutable.

La documentation de référence spring détaille les étapes pour un projet avec une seule datasource contenant un seul job et sans paramètres de lancement.

On va voir dans l’article les configurations Spring Boot nécessaires pour lancer un job d’alimentation de données dans une base, avec datasources technique et fonctionnelle séparées et comment traiter les paramètres d’entrée et propriétés système.

Configuration maven

Déclaration projet parent Spring Boot


<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>1.2.2.RELEASE</version>
</parent>

Ajout dépendance maven Spring Boot pour les batchs (plus besoin de déclarer les dépendances spring)


<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-batch</artifactId>
</dependency>

Ajout du plugin spring boot

 

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

Configuration java du runner

L’écriture de la configuration des beans JobExplorer et JobLauncherCommandLineRunner n’est pas nécessaire dans le cas de projets mono job et mono datasource.

Test du runner à vide

La librairie system rule permet de gérer de manière simple et fiable les propriétés système et les codes de sortie.

Packager le livrable jar exécutable

maven clean package

Pré-requis d’environnement pour exécuter le job d’alimentation

  • Une datasource technique
  • Une datasource fonctionnelle
  • Un fichier de données csv
  • Un fichier de propriétés contenant les clés
    • ds.technical.driverclassname
    • ds.technical.url
    • ds.technical.username
    • ds.technical.password
    • ds.functional.driverclassname
    • ds.functional.url
    • ds.functional.username
    • ds.functional.password
    • commit.interval

Exécuter le jar

avec maven

mvn spring-boot:run -Drun.arguments=input.file.path=alimentation.csv

plus les propriétés de VM -Dbatch.properties.path=file:batch.properties -Djob.name=alimentationJob

ou bien directement le jar

java -Dbatch.properties.path=file:batch.properties -Djob.name=alimentationJob -jar springbatch-sample.jar input.file.path=alimentation.csv

Voir la documentation de référence spring pour les détails des jar exécutable Spring Boot.

Publicités