Spring Batch

Diese Seite bleibt auch ohne JavaScript lesbar. Suche und Buttons sind Zusatzkomfort.

Spring Batch für Enterprise-Massenverarbeitung

Jobs, Steps, Chunks, Restartability, Skip/Retry und betriebliche Nachvollziehbarkeit.

Spring Batch: Job Repository + Steps + Chunk-Verarbeitung JobLauncherStart JobParameter StepReader/Processor WriterCommit Chunk JobRepository speichert Status für Restart, Skip, Retry und Auditing.Batch ist kontrollierte Massenverarbeitung, kein versteckter Cron-Hack.
1. Batch ist kontrollierte Massenverarbeitung

Viele Enterprise-Systeme haben Nachtläufe, Abrechnungen, Imports, Exports, Datenkorrekturen oder regulatorische Reports. Spring Batch modelliert diese Abläufe explizit als Job, Step und Chunk. Der Status landet im Job Repository und ermöglicht Restart, Monitoring und Nachvollziehbarkeit.

Ein Batchjob ist kein verstecktes @Scheduled mit einer 500-Zeilen-Schleife. Robustheit entsteht durch definierte Commit-Größen, fehlerhafte Datensätze, Wiederholungen, Restart und fachliche Kontrollsummen.

Chunk-orientierter Step
@Configuration
class BillingBatchJobConfig {
    @Bean
    Step invoiceExportStep(JobRepository jobs,
                           PlatformTransactionManager tx,
                           ItemReader<Invoice> reader,
                           ItemProcessor<Invoice, InvoiceExportRow> processor,
                           ItemWriter<InvoiceExportRow> writer) {
        return new StepBuilder("invoiceExportStep", jobs)
            .<Invoice, InvoiceExportRow>chunk(500, tx)
            .reader(reader)
            .processor(processor)
            .writer(writer)
            .faultTolerant()
            .skip(InvalidInvoiceException.class)
            .skipLimit(25)
            .build();
    }
}
2. Restartability und Parameter

Job-Parameter definieren die Identität einer Ausführung. invoiceExport für 2026-07-07 ist fachlich ein anderer Lauf als für 2026-07-08. Ohne saubere Parameter werden Restarts und Audits unklar.

Job-Start mit Parametern
java -jar billing-batch.jar   --spring.batch.job.name=invoiceExportJob   billing.date=2026-07-07   output.file=/exports/invoices-2026-07-07.csv
3. Skip, Retry, Dead Letter

Skip eignet sich für einzelne schlechte Datensätze. Retry eignet sich für temporäre technische Fehler. Ein fachlicher Fehler sollte nicht endlos wiederholt werden. Jeder übersprungene Satz braucht Bericht, Korrekturpfad und Verantwortlichkeit.

Enterprise-Prüffragen

  • Job-Parameter fachlich eindeutig?
  • Chunk-Größe begründet?
  • Restart getestet?
  • Skip/Retry fachlich und betrieblich dokumentiert?