Spring Boot 4 Microservices & REST APIs · Lektion

Neustart und Fehlerbehandlung

Stellen Sie Batch-Jobs nach Fehlern wieder her.

Lektion 4 von 413 Schritte

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 + skipLimit tolerates bad data
  • retry + retryLimit handles transient errors
  • Listeners audit skips/retries; keep writes idempotent
Kostenlos starten

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

  1. Scheduling mit @Scheduled
  2. Spring-Batch-Jobs und -Schritte
  3. Reader, Processor und Writer
  4. Neustart und Fehlerbehandlung
← Zurück zu Spring Boot 4 Microservices & REST APIs