재시작과 오류 처리
배치 작업의 실패에서 복구해 보세요.
재시작과 오류 처리은(는) CoddyKit의 무료 Spring Boot 4 Microservices & REST APIs 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Spring Boot 4 Microservices & REST APIs 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Spring Boot 4 Microservices & REST APIs 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
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
자주 묻는 질문
“재시작과 오류 처리” 강의는 무료인가요?
네 — “재시작과 오류 처리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Spring Boot 4 Microservices & REST APIs 강의 전체를 잠금 해제할 수 있습니다. Spring Boot 4 Microservices & REST APIs 강의에는 총 4개의 강의가 포함되어 있습니다.
“재시작과 오류 처리”에서 뭘 배우나요?
배치 작업의 실패에서 복구해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Spring Boot 4 Microservices & REST APIs을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Spring Boot 4 Microservices & REST APIs을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Spring Boot 4 Microservices & REST APIs은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“재시작과 오류 처리” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Spring Boot 4 Microservices & REST APIs 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Spring Boot 4 Microservices & REST APIs 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.