Neustart und Fehlerbehandlung
Stellen Sie Batch-Jobs nach Fehlern wieder her.
Neustart und Fehlerbehandlung ist eine kostenlose Spring Boot 4 Microservices & REST APIs-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Spring Boot 4 Microservices & REST APIs-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Spring Boot 4 Microservices & REST APIs-Kurs umfasst insgesamt 4 Lektionen.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Failures are inevitable
Long batch jobs hit bad rows, transient network errors, and crashes. Spring Batch provides skip, retry and restartability so a job can survive and resume.
Restartability basics
Because the JobRepository records each step execution, a failed job can be restarted and it resumes from where it stopped, not from the beginning. The same JobParameters must be used.
Re-launching a failed job
Relaunch with the same parameters and Spring Batch detects the prior failed execution and continues it. Completed steps are skipped.
JobParameters params = new JobParametersBuilder()
.addString("runDate", "2026-05-30")
.toJobParameters();
// running again with SAME params resumes the failed instance
jobLauncher.run(importJob, params);Skipping bad items
Use a fault-tolerant step to skip records that throw a given exception, up to a limit, instead of failing the whole job.
return new StepBuilder("step1", repo)
.<Person, Person>chunk(10, tx)
.reader(reader()).processor(proc()).writer(writer())
.faultTolerant()
.skip(ParseException.class)
.skipLimit(20)
.build();Skip limit
The skipLimit caps how many skips are tolerated. Once exceeded, the step fails. This prevents a job from silently ignoring a flood of bad data.
Retrying transient errors
For temporary failures (a deadlock, a brief network blip) use retry. The item operation is retried up to a limit before being skipped or failing.
return new StepBuilder("step1", repo)
.<Person, Person>chunk(10, tx)
.reader(reader()).processor(proc()).writer(writer())
.faultTolerant()
.retry(DeadlockLoserDataAccessException.class)
.retryLimit(3)
.build();Combining skip and retry
You can chain both: retry transient exceptions a few times, and skip persistent ones. Order matters - retry first, then skip if retries are exhausted.
.faultTolerant()
.retry(TransientException.class).retryLimit(3)
.skip(InvalidDataException.class).skipLimit(50)SkipListener and RetryListener
Listeners let you observe and log what was skipped or retried, which is essential for auditing batch runs.
public class LogSkipListener implements SkipListener<Person, Person> {
@Override
public void onSkipInProcess(Person item, Throwable t) {
log.warn("Skipped {} due to {}", item, t.getMessage());
}
}Idempotency matters
On restart, already-committed chunks are not re-read, but your writes should still be idempotent where possible (use upserts or natural keys) so a partial run does not create duplicates.
No-rollback exceptions
Sometimes an exception should not roll back the chunk. Declare it with noRollback so processing continues without discarding the transaction.
.faultTolerant()
.noRollback(NonCriticalException.class)Preventing accidental reruns
A completed JobInstance cannot be re-run with the same parameters - Spring throws JobInstanceAlreadyCompleteException. Add a unique parameter (like a timestamp) when you truly want a fresh run.
Quick Check
Test your error-handling knowledge.
Recap
You made batch jobs resilient:
- Restartability resumes a failed job from the last good point
skip+skipLimittolerates bad dataretry+retryLimithandles transient errors- Listeners audit skips/retries; keep writes idempotent
Lerne Java mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 24
- Lektionen
- 93
Häufig gestellte Fragen
Ist die Lektion „Neustart und Fehlerbehandlung“ kostenlos?
Ja — der vollständige Text von „Neustart und Fehlerbehandlung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Spring Boot 4 Microservices & REST APIs-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Spring Boot 4 Microservices & REST APIs-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Neustart und Fehlerbehandlung“?
Stellen Sie Batch-Jobs nach Fehlern wieder her. Du übst Spring Boot 4 Microservices & REST APIs mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Spring Boot 4 Microservices & REST APIs zu starten?
Keine Vorkenntnisse erforderlich. Spring Boot 4 Microservices & REST APIs auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Neustart und Fehlerbehandlung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Spring Boot 4 Microservices & REST APIs-Lektion Code schreiben und ausführen?
Ja. Jede Spring Boot 4 Microservices & REST APIs-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Scheduling mit @Scheduled
- Spring-Batch-Jobs und -Schritte
- Reader, Processor und Writer
- Neustart und Fehlerbehandlung