728x90
Spring Batch는 Job → Step → Reader/Processor/Writer 구조로 구성되며, 실행 시 각 컴포넌트가 정의된 순서와 스프링 컨텍스트 초기화 흐름에 따라 동작합니다. 이 글에서는 클래스 단위 기준으로 실행 순서를 정리합니다.
✅ 실행 순서 흐름 (클래스 단위)
BatchApplication
└─ BatchConfig ← @Configuration: Job, Step, Reader 등 Bean 등록
└─ UserJobLauncher ← @Component: JobLauncher로 수동 Job 실행
└─ ImportUserJob ← BatchConfig에서 정의된 Job
├─ JobCompletionNotificationListener.beforeJob() ← Job 실행 전 로직
└─ ImportUserStep ← Job 내 단일 Step
├─ UserReader ← ItemReader: 입력 데이터 읽기
├─ UserProcessor 또는 PersonItemProcessor ← ItemProcessor: 데이터 가공 처리
└─ UserWriter ← ItemWriter: 처리된 데이터 저장
└─ JobCompletionNotificationListener.afterJob() ← Job 실행 후 로직
🧩 실행 단계별 설명
1. BatchApplication
- Spring Boot 애플리케이션의 진입점
@SpringBootApplication
→@ComponentScan
포함
2. BatchConfig
@Configuration
클래스- SpringContext 초기화 시 가장 먼저 실행되어 Bean 등록
- 등록 대상:
Job
,Step
,ItemReader
,ItemProcessor
,ItemWriter
,JobListener
3. UserJobLauncher
@Component
로 등록된 실행 트리거JobLauncher.run(importUserJob, ...)
형태로 Job을 수동 실행
4. ImportUserJob
- 실제 실행되는 Job 정의
- 내부에 Step 및 Listener 포함
5. JobCompletionNotificationListener
beforeJob()
: Job 시작 전 실행afterJob()
: Job 완료 후 실행
6. ImportUserStep
- Job 내 단일 Step
- 일반적으로 chunk 기반 구성
7. UserReader
, UserProcessor
, UserWriter
구성 요소 | 역할 |
---|---|
UserReader |
데이터를 읽음 (CSV, DB 등) |
UserProcessor or PersonItemProcessor |
데이터 가공, 필터링 |
UserWriter |
최종 데이터 저장 |
📌 정리 요약
BatchConfig
는 컨텍스트 초기화 시 가장 먼저 실행됨UserJobLauncher
는 구성된 Job을 수동 실행Job → Step → Chunk(ItemReader → Processor → Writer)
순으로 처리됨- 각 단계에서 필요한 컴포넌트는 클래스 단위로 명확히 분리됨
🔚 마무리
Spring Batch는 실행 순서가 명확하며, 클래스와 Bean 등록 시점을 이해하면 디버깅과 유지보수가 매우 용이해집니다. 위 구조는 수동 Job 실행 방식 기반이지만, 자동 실행(JobLauncherApplicationRunner
) 방식과도 거의 동일한 실행 흐름을 따릅니다.
728x90
'BackEnd > Spring Batch' 카테고리의 다른 글
Spring Batch 실행 이력 테이블 분석 가이드 (0) | 2025.06.02 |
---|---|
Spring Batch Chunk Size에 따른 성능 비교 실험 (Bulk Insert 포함) (0) | 2025.06.02 |
Spring Batch + MyBatis 예제 정리 (CSV → DB 처리) (0) | 2025.06.02 |