Lecteurs, processeurs et rédacteurs
Construisez un flux de traitement par lots orienté blocs.
Lecteurs, processeurs et rédacteurs est une leçon Spring Boot 4 Microservices & REST APIs gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Spring Boot 4 Microservices & REST APIs, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Spring Boot 4 Microservices & REST APIs comprend 4 leçons au total.
Le triptyque lecture-traitement-écriture
Une étape par blocs comporte trois collaborateurs :
- ItemReader — fournit les éléments un par un
- ItemProcessor — transforme ou filtre un élément
- ItemWriter — conserve un bloc d’éléments
Interface ItemReader
ItemReader.read() renvoie l’élément suivant, ou null lorsque l’entrée est épuisée. Spring Batch continue de l’appeler jusqu’à ce qu’il renvoie null.
public interface ItemReader<T> {
T read() throws Exception;
}FlatFileItemReader
Pour les fichiers CSV, FlatFileItemReader lit les lignes et les convertit en objets à l’aide d’un convertisseur de lignes.
@Bean
public FlatFileItemReader<Person> reader() {
return new FlatFileItemReaderBuilder<Person>()
.name("personReader")
.resource(new ClassPathResource("people.csv"))
.delimited()
.names("firstName", "lastName")
.targetType(Person.class)
.build();
}JdbcCursorItemReader
Pour lire une base de données, utilisez JdbcCursorItemReader ou JdbcPagingItemReader. La pagination est préférable pour les ensembles de résultats très volumineux afin d’éviter de conserver un curseur ouvert trop longtemps.
@Bean
public JdbcCursorItemReader<Person> dbReader(DataSource ds) {
return new JdbcCursorItemReaderBuilder<Person>()
.name("dbReader")
.dataSource(ds)
.sql("SELECT first_name, last_name FROM people")
.rowMapper(new PersonRowMapper())
.build();
}Interface ItemProcessor
ItemProcessor transforme un élément d’entrée en élément de sortie. Les types d’entrée et de sortie peuvent être différents.
public interface ItemProcessor<I, O> {
O process(I item) throws Exception;
}Écrire un processeur
Ici, un processeur convertit les noms en majuscules. Renvoyer un objet transformé est le cas le plus courant.
public class UpperCaseProcessor implements ItemProcessor<Person, Person> {
@Override
public Person process(Person p) {
return new Person(p.getFirstName().toUpperCase(),
p.getLastName().toUpperCase());
}
}Filtrer avec le processeur
Si un processeur renvoie null, l’élément est filtré et n’atteint jamais l’écrivain. C’est ainsi que vous ignorez des enregistrements selon des règles métier.
public Person process(Person p) {
if (p.getLastName().isBlank()) {
return null; // drop this record
}
return p;
}Interface ItemWriter
ItemWriter reçoit un bloc d’éléments à la fois, et non des éléments individuels. Cela lui permet de regrouper l’écriture en une seule opération efficace.
public interface ItemWriter<T> {
void write(Chunk<? extends T> chunk) throws Exception;
}JdbcBatchItemWriter
JdbcBatchItemWriter effectue une insertion ou une mise à jour SQL groupée pour l’ensemble du bloc, ce qui est bien plus rapide que des écritures ligne par ligne.
@Bean
public JdbcBatchItemWriter<Person> writer(DataSource ds) {
return new JdbcBatchItemWriterBuilder<Person>()
.dataSource(ds)
.sql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)")
.beanMapped()
.build();
}Les relier dans une étape
L’étape relie les trois composants en utilisant une taille de bloc. Les éléments circulent du lecteur vers le processeur, puis vers l’écrivain, par blocs.
return new StepBuilder("step1", repo)
.<Person, Person>chunk(50, tx)
.reader(reader())
.processor(new UpperCaseProcessor())
.writer(writer(ds))
.build();Lecteurs et écrivains personnalisés
Vous pouvez implémenter directement les interfaces pour des sources personnalisées (une API REST, une file d’attente). Spring propose également ItemStream, afin que votre composant puisse enregistrer et restaurer sa position lors des redémarrages.
Vérification rapide
Vérifiez votre compréhension des trois composants.
Récapitulatif
Vous avez assemblé un pipeline par blocs :
ItemReader.read()renvoie des éléments jusqu’à obtenir nullItemProcessortransforme les éléments : renvoyer null les filtreItemWriterécrit unChunkentier en une seule fois- L’étape relie les trois composants à l’aide d’une taille de bloc
Apprends Java avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 24
- Leçons
- 93
Questions Fréquemment Posées
La leçon « Lecteurs, processeurs et rédacteurs » est-elle gratuite ?
Oui — le texte complet de « Lecteurs, processeurs et rédacteurs » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Spring Boot 4 Microservices & REST APIs, passe à CoddyKit PRO. Le cours Spring Boot 4 Microservices & REST APIs comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Lecteurs, processeurs et rédacteurs » ?
Construisez un flux de traitement par lots orienté blocs. Tu pratiques Spring Boot 4 Microservices & REST APIs avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Spring Boot 4 Microservices & REST APIs ?
Aucune expérience préalable n'est requise. Spring Boot 4 Microservices & REST APIs sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Lecteurs, processeurs et rédacteurs » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Spring Boot 4 Microservices & REST APIs ?
Oui. Chaque leçon Spring Boot 4 Microservices & REST APIs inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Planification avec @Scheduled
- Tâches et étapes Spring Batch
- Lecteurs, processeurs et rédacteurs
- Redémarrage et gestion des erreurs