0% ont trouvé ce document utile (0 vote)
89 vues32 pages

Introduction à Spring Batch et son utilisation

Transféré par

Rihab IDOUDI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
89 vues32 pages

Introduction à Spring Batch et son utilisation

Transféré par

Rihab IDOUDI
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SPRING BATCH

UP ASI
Bureau E204

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 1


PLAN DU COUS

– Introduction

– Spring Batch

– Pourquoi utiliser Spring Batch ?

– Architecture de base

– TP: Mettre en place un job

– Travail à faire

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 2


Introduction

• Le mot Batch fait référence à un traitement sur un gros volume


de données.

• Un Batch a pour objectif de :


1. Lire des données provenant de plusieurs sources homogènes ou
hétérogènes (fichiers, bases de données, etc).

2. Faire les traitements nécessaires sur ces données.

3. Stocker le résultat dans un ou plusieurs conteneurs de destination

(fichiers, bases de données, queue, etc..) dans le but de les

exploiter.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 3


Introduction

Programme de
Lecture traitement Écriture
par lot

Sources de données potentielles Destinations de données potentielles


© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 4
Introduction

• Le batch permet d’automatiser une suite de commandes exécutées en


série (lots) sur un ordinateur sans une intervention d’un employé pour
réaliser cette opération.

• Il est utilisé pour automatiser certaines tâches comme :


– La création de données facilitant l’aide à la décision ( base de données
décisionnelle) Exp : chiffre affaire par mois- année-catégorie Client-région

– L'arrêt planifié des ordinateurs

– La sauvegarde de milliers de lignes dans une table de la BD

– Exécuter des instructions DOS (Création, modification et suppression des


fichiers / Formatage d’un disque /…)

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 5


Introduction

• Spring Batch est un framework sophistiqué open source capable


d'exécuter des tâches par lots dans des environnements d'entreprise.

• Il permet de simplifier la création des jobs grâce à un code modulaire et


facilement maintenable

• Il permet de corriger des problèmes récurrents :

 Productivité ( gérer des volumes importants en un minimum de temps)

 Gestion de gros volumes de données (temps de traitement très lent)

 Fiabilité (problème de pertes d’informations)

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 6


Pourquoi utiliser Spring Batch ?

• Spring Batch facilite le développement de batch à travers des outils


dédiés. Il permet ainsi :

– Une division du code bien défini permettant une maintenabilité


facilitée et une logique commune à la notion des batchs (classes
avec des rôles bien spécifiés à l’avance).

– Le traitement d’un gros volume de données par lots tout en


allégeant les charges des différentes instances sollicitées.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 7


Architecture de base

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 8


Architecture de base - COMPOSANTS

• Pour gérer les données d'un batch, on utilise principalement les trois outils
suivants:

 JobLauncher : Il est chargé d'exécuter un Job. Le déclanchement


peut être automatique (auto-déclenchement) ou manuel (script, web
service,etc..).

 Job : C’est le composant qui représente la tâche à qui on délègue la


responsabilité du besoin métier traité dans le programme. Il permet de
lancer un ou plusieurs step ordonnancés ( avec un ordre précis).

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 9


Architecture de base - COMPOSANTS

 Step : Il représente une étape au sein du batch. Les Steps sont


généralement stockées dans des beans pour pouvoir y accéder
facilement dans différents Job.
Il est chargé de définir trois sous-composants :
o ItemReader
o ItemProcessor
o ItemWriter

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 10


Architecture de base - COMPOSANTS

• Ces trois composants opèrent avec l’ordre suivant :

1. ItemReader récupère les données d'entrées à traiter. Elles peuvent


provenir de diverses sources (bases de données, csv, xml, xls, …).

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 11


Architecture de base - COMPOSANTS

• Ces trois composants opèrent avec l’ordre suivant :

2. ItemProcessor contient la logique du traitement des données


récupérées par l’ItemReader.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 12


Architecture de base - COMPOSANTS

• Ces trois composants opèrent avec l’ordre suivant :

3. ItemWriter : Il se charge de sauvegarder les données en sortie de


l’ItemProcessor dans une ou plusieurs destinations désirés (bases de
données, csv, xml, xls, cloud, …).

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 13


Architecture de base - COMPOSANTS

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 14


Architecture de base - COMPOSANTS

JobRepository : Le JobRepository est la classe qui permet le stockage


d’un nombre important de données autour du Job.
Il permet ainsi de récupérer un historique des différents jobs qui ont été
lancés.
La sauvegarde de données faite par cette classe permettra donc de
redémarrer des Jobs plus efficacement ou bien effectuer des pauses
dans le traitement.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 15


Architecture de base - COMPOSANTS

JobRepository

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 16


Architecture de base - COMPOSANTS

JobRepository

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 17


Architecture de base - COMPOSANTS

JobRepository

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 18


Travail à faire

• Compléter les toDo au niveau du code pour que le projet soit


fonctionnel et que le batch puisse insérer les données
correctement.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 19


TP: METTRE EN PLACE UN JOB

• Importer le projet Spring boot TODO ayant l’arborescence suivante et créer la


base donnée tpStockBatchtoDo :

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 20


TP: METTRE EN PLACE UN JOB - Dépendances

• Pour utiliser Spring Batch avec Spring Boot, il faut ajouter les
dépendances suivantes (déjà existantes dans le projet toDo):

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

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 21


TP: METTRE EN PLACE UN JOB - Configuration

• Configuration du Job:
- Pour activer le traitement par lots, nous devons annoter la
classe de configuration StockBatchConfig avec
@EnableBatchProcessing.
- Nous devons par la suite créer:
 Un reader pour lire notre fichier CSV.
 Un processor pour traiter les données d'entrée avant
d'écrire.
 Un writer pour écrire dans la base de données.

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 22


TP: METTRE EN PLACE UN JOB – Les classes

• Inspecter en suivant l’ordre les classes suivantes (inspecter le code


source des classes en respectant l’ordre) :

 Scheduler : Lancer le batch Launcher à intervalle de temps régulier


pour démarrer les différents jobs (un dans notre cas ou plusieurs).
• BatchLauncher : Lancer les jobs
 StockBatchConfig : configurer le batch (step, reader, processor,writer)

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 23


TP: METTRE EN PLACE UN JOB

• Remplir les espaces manquants dans la classe StockBatchConfig afin de :

 Accéder au fichier excel contenant les informations du stock


 Récupérer les noms de colonnes des différents attributs du fichier excel
séparés par des virgules (delimiter = ", " )

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 24


TP: METTRE EN PLACE UN JOB

• Ajouter le code nécessaire pour injecter le Job et le jobLauncher dans la


classe Batch Launcher.
• Modifier la classe StockBatchConfig pour activer le traitement par lot (batch)
• Modifier la classe Scheduler pour programmer le job tous les 5 minutes ( pour
des raisons de test)

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 25


TP: METTRE EN PLACE UN JOB

• Modifier le code des classes et interfaces suivantes afin d’ajouter une


méthode prédéfinie permettant de sauvegarder tous les données (stocks) à la
fois :

 IStockService
 StockServiceImpl
 StockWriter

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 26


TP: METTRE EN PLACE UN JOB - Configuration

• Ajouter la ligne suivante dans le fichier de configuration


application.properties:

spring.batch.initialize-schema=ALWAYS

• Inspecter le fichier excel stock.csv qui contient les lignes


ajoutées dans le répertoire src/main/ressources:

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 27


TP: METTRE EN PLACE UN JOB

• Exposer au niveau du contrôleur StockRestController la méthode permettant


la sauvegarde des données du stock pour pouvoir exécuter le job d’une
façon manuelle ( avec postman ou swagger)

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 28


TP: METTRE EN PLACE UN JOB

• Lancer le projet Spring Boot


• En cas d’erreur lors du lancement indiquant qu’une table n’existe pas
(batch_job_execution par exemple), le lancement du script batch.sql va
résoudre le problème ( comportement liée au type du SGBD choisi)

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 29


TP: METTRE EN PLACE UN JOB – Les tables

• Lancer le script batch.sql pour créer les tables de Spring Batch ( grâce
auxquelles SpringBatch assure le monitoring des données manipulés
dans nos traitements).

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 30


SPRING BATCH

Si vous avez des questions, n’hésitez pas à nous


contacter :

Département Informatique
UP ASI
Bureau E204

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 31


SPRING BATCH

© 2021-2022 – ESPRIT – Module Architecture des SI II (Spring) 32

Vous aimerez peut-être aussi