스프링 배치는 대용량 일괄처리 나, 특정 지정 시점에 스케줄러를 이용하여 작업이 필요한 경우 나 , 로깅/추적, 트랜잭션 관리, 작업 처리 통계, 작업 재시작, 건너뛰기, 리소스 관리 등등 기능을 제공함.
- 스프링배치는 Batch Job을 관리하지만 실행시키는 기능은 지원하고 있지 않는다.
- 그래서 Quartz, Scheduler,Jenkins 등등으로 실행시켜야한다.
![](https://velog.velcdn.com/images/jhva/post/4ce07464-f482-4fca-a943-dac556ed8a3a/image.png)
Job
- Job은 배치의 실행 단위이고, step은 Job의 세부단위라고 말할수있음.
- step의 흐름을 관리할수있다.
- A step 실행후 ,B step 실행 이런식…
- A step 과 B step을 한번에 실행시킬수도있음.
chunk Base
ItemReader, ItemProcessor, ItemWriter 이쪽부분들이 chunkBase
ItemReader
- 배치 처리 대상 객체를 읽어 ItemProcessor 또는 ItemWriter에게 전달
ItemProcessor
- input객체를 output객체로 필터링 후 processing 해서 ItemWriter에게 전달함.
- ItemReader에서 읽어 온 데이터를 수정 또는 ItemWriter 대상인지 필터링함
- ItemProcessor는 Optional하고
- ItemProcessor가 하는 일을 ItemReader 또는 ItemWriter가 대신할 수 있음 .
ItemWriter
- 배치 처리 대상 객체를 처리함
- 예를 들면 DB update 를 하거나 처리 대상 사용자에게 알림을 보냄 .
Job Repository
배치 실행을 위한 메타 데이터가 저장되는 테이블
![업로드중..]()
- spring-batch-core/org.springframework/batch/core/* 에 위치함
- Batch_JOB_INSTANCE (row가 생성되는 기준)
- job 실행시에 job의 이름과 key를기준으로 row가 생성이됨 .
- BATCH_JOB_EXECUTION
- job이 실행되는 동안 시작.종료 시간 , job상태 등을 관리
- 하나의 Batch Job인스턴스는 n개의 EXECUTION을 포함함.
- BATCH_JOB_EXECUTION_PARAMS
- job을 실행하기 위해 주입된 parameter 정보 저장
- BATCH_JOB_EXECUTION_CONTEXT
- Job이 실행되서 공유해야할 데이터를 직렬화해서 저장함.
- BATCH_STEP_EXECUTION
- Step이 실행되는 동안 필요한 데이터 또는 실행된 결과 저장
- Batch_STEP_EXECUTION_CONTEXT
- Step이 실행되며 공유해야할 데이터를 직렬화해서 저장
- 저장된데이터는 step끼리공유(step끼리는 공유를 못해서)를하기위해서는 BATCH_JOB_EXECUTION_CONTEXT에 저장해서 사용해야함