Spring Batch est un framework batch léger et complet conçu pour permettre le développement d'applications batch robustes vitales pour les opérations quotidiennes des systèmes d'entreprise. Spring Batch s'appuie sur la productivité, l'approche de développement basée sur POJO et les capacités générales de facilité d'utilisation que les gens ont appris à connaître grâce au Spring Framework, tout en permettant aux développeurs d'accéder et d'exploiter facilement des services d'entreprise plus avancés lorsque cela est nécessaire.
Si vous recherchez un outil d'orchestration d'exécution pour vos applications Batch ou si vous avez besoin d'une console de gestion pour afficher les exécutions actuelles et historiques, jetez un œil à Spring Cloud Data Flow. Il s'agit d'un outil d'orchestration permettant de déployer et d'exécuter des microservices basés sur l'intégration de données, notamment les applications Spring Batch.
Ce didacticiel rapide vous montre comment configurer un projet minimal pour exécuter un simple travail par lots avec Spring Batch.
Dans votre IDE préféré, créez un nouveau projet Java 17+ basé sur Maven et ajoutez les dépendances suivantes :
< dependencies >
< dependency >
< groupId >org.springframework.batch</ groupId >
< artifactId >spring-batch-core</ artifactId >
< version >${LATEST_VERSION}</ version >
</ dependency >
< dependency >
< groupId >org.hsqldb</ groupId >
< artifactId >hsqldb</ artifactId >
< version >${LATEST_VERSION}</ version >
< scope >runtime</ scope >
</ dependency >
</ dependencies >
Créez ensuite une classe de configuration pour définir la source de données et le gestionnaire de transactions qui seront utilisés par le référentiel de tâches :
import javax . sql . DataSource ;
import org . springframework . context . annotation . Bean ;
import org . springframework . context . annotation . Configuration ;
import org . springframework . jdbc . support . JdbcTransactionManager ;
import org . springframework . jdbc . datasource . embedded . EmbeddedDatabaseBuilder ;
@ Configuration
public class DataSourceConfiguration {
@ Bean
public DataSource dataSource () {
return new EmbeddedDatabaseBuilder ()
. addScript ( "/org/springframework/batch/core/schema-hsqldb.sql" )
. build ();
}
@ Bean
public JdbcTransactionManager transactionManager ( DataSource dataSource ) {
return new JdbcTransactionManager ( dataSource );
}
}
Dans ce didacticiel, une base de données HSQLDB intégrée est créée et initialisée avec les tables de métadonnées de Spring Batch.
Enfin, créez une classe pour définir le travail par lots :
import org . springframework . batch . core . Job ;
import org . springframework . batch . core . JobParameters ;
import org . springframework . batch . core . Step ;
import org . springframework . batch . core . configuration . annotation . EnableBatchProcessing ;
import org . springframework . batch . core . job . builder . JobBuilder ;
import org . springframework . batch . core . launch . JobLauncher ;
import org . springframework . batch . core . repository . JobRepository ;
import org . springframework . batch . core . step . builder . StepBuilder ;
import org . springframework . batch . repeat . RepeatStatus ;
import org . springframework . context . ApplicationContext ;
import org . springframework . context . annotation . AnnotationConfigApplicationContext ;
import org . springframework . context . annotation . Bean ;
import org . springframework . context . annotation . Configuration ;
import org . springframework . context . annotation . Import ;
import org . springframework . jdbc . support . JdbcTransactionManager ;
@ Configuration
@ EnableBatchProcessing
@ Import ( DataSourceConfiguration . class )
public class HelloWorldJobConfiguration {
@ Bean
public Step step ( JobRepository jobRepository , JdbcTransactionManager transactionManager ) {
return new StepBuilder ( "step" , jobRepository ). tasklet (( contribution , chunkContext ) -> {
System . out . println ( "Hello world!" );
return RepeatStatus . FINISHED ;
}, transactionManager ). build ();
}
@ Bean
public Job job ( JobRepository jobRepository , Step step ) {
return new JobBuilder ( "job" , jobRepository ). start ( step ). build ();
}
public static void main ( String [] args ) throws Exception {
ApplicationContext context = new AnnotationConfigApplicationContext ( HelloWorldJobConfiguration . class );
JobLauncher jobLauncher = context . getBean ( JobLauncher . class );
Job job = context . getBean ( Job . class );
jobLauncher . run ( job , new JobParameters ());
}
}
Le travail de ce didacticiel est composé d'une seule étape qui imprime « Hello world ! » à la sortie standard.
Vous pouvez désormais exécuter la méthode main
de la classe HelloWorldJobConfiguration
pour lancer le travail. Le résultat devrait être similaire à ce qui suit :
INFO: Finished Spring Batch infrastructure beans configuration in 8 ms.
INFO: Starting embedded database: url='jdbc:hsqldb:mem:testdb', username='sa'
INFO: No database type set, using meta data indicating: HSQL
INFO: No Micrometer observation registry found, defaulting to ObservationRegistry.NOOP
INFO: No TaskExecutor has been set, defaulting to synchronous executor.
INFO: Job: [SimpleJob: [name=job]] launched with the following parameters: [{}]
INFO: Executing step: [step]
Hello world!
INFO: Step: [step] executed in 10ms
INFO: Job: [SimpleJob: [name=job]] completed with the following parameters: [{}] and the following status: [COMPLETED] in 25ms
Ce guide est un didacticiel plus réaliste qui montre un travail par lots ETL typique qui lit les données d'un fichier plat, les transforme et les écrit dans une base de données relationnelle. Il s'agit d'un projet Spring Batch basé sur Spring Boot. Vous trouverez le guide de démarrage ici : Création d'un service par lots.
Vous pouvez trouver plusieurs échantillons à essayer ici : Spring Batch Samples.
Si vous avez une question ou une demande d'assistance, veuillez ouvrir une nouvelle discussion sur GitHub Discussions ou poser une question sur StackOverflow.
Veuillez ne pas créer de problèmes sur Issue Tracker pour des questions ou des demandes d’assistance. Nous souhaitons conserver le suivi des problèmes exclusivement pour les rapports de bogues et les demandes de fonctionnalités.
Spring Batch utilise GitHub Issues pour enregistrer les bogues et les demandes de fonctionnalités. Si vous souhaitez soulever un problème, veuillez suivre les recommandations ci-dessous :
Pour les bogues non triviaux, veuillez créer un scénario de test ou un projet qui reproduit le problème et le joindre au problème, comme détaillé dans les directives de signalement des problèmes.
Veuillez consulter notre politique de sécurité.
Clonez le dépôt git à l'aide de l'URL sur la page d'accueil de Github :
$ git clone [email protected]:spring-projects/spring-batch.git
$ cd spring-batch
Maven est l'outil de construction utilisé pour Spring Batch. Vous pouvez créer le projet avec la commande suivante :
$ ./mvnw package
Si vous souhaitez effectuer une compilation complète avec tous les tests d'intégration, exécutez :
$ ./mvnw verify
Veuillez noter que certains tests d'intégration sont basés sur Docker, assurez-vous donc que Docker est opérationnel avant d'exécuter une version complète.
Pour générer la documentation de référence, exécutez les commandes suivantes :
$ cd spring-batch-docs
$ ../mvnw antora:antora
La documentation de référence peut être trouvée dans spring-batch-docs/target/anotra/site
.
Si vous souhaitez construire le projet dans un conteneur Docker, vous pouvez procéder comme suit :
$> docker run -it --mount type=bind,source="$(pwd)",target=/spring-batch maven:3-openjdk-17 bash
#> cd spring-batch
#> ./mvnw package
Cela montera le code source que vous avez cloné précédemment sur l'hôte à l'intérieur du conteneur. Si vous souhaitez travailler sur une copie du code source à l'intérieur du conteneur (pas d'effets secondaires sur l'hôte), vous pouvez procéder comme suit :
$> docker run -it maven:3-openjdk-17 bash
#> git clone https://github.com/spring-projects/spring-batch.git
#> cd spring-batch
#> ./mvnw package
Nous acceptons les contributions de toute nature ! Voici quelques façons pour vous de contribuer au projet :
Avant d'accepter les pull request, nous aurons besoin que vous signiez l'accord du contributeur. La signature de l'accord de contributeur n'accorde à personne de droits d'engagement sur le référentiel principal, mais cela signifie que nous pouvons accepter vos contributions, et vous obtiendrez un crédit d'auteur si nous le faisons. Les contributeurs actifs peuvent être invités à rejoindre l'équipe principale et avoir la possibilité de fusionner les demandes d'extraction.
Veuillez consulter notre code de conduite.
Spring Batch est un logiciel Open Source publié sous la licence Apache 2.0.