배치란 자동으로 정해놓은 시간에 맞춰 지정한 단계에 맞게 일련의 과정이 처리되는 프로그램이다.
스프링 프레임워크 구성에 맞춰 배치 프로그램 개발을 제공하는 프레임워크이다. 로깅, 병렬처리, 트랜잭션 관리, 대용량 데이터 처리 지원 또한 해주며 Spring 프레임워크의 3대 요소인 DI, AOP, 서비스 추상화 등을 모두 사용할 수 있다.
다양한 배치 수행과 관련된 수치 데이터와 Job의 상태를 관리한다.
배치 처리 과정을 하나의 단위로 만들어 표현한 객체이고, 여러 Step 인스턴스를 포함하는 컨테이너다.
Job을 실행시키며 Job의 재실행 가능 여부 검증, 파라미터 유효성 검증 등을 수행한다.
각 step은 job을 구성하는 독립된 작업의 단위로 Tasklet, Chunk 기반으로 되어있다.
Job을 선언하고 해당 Job을 수행하기 위한 Step을 정의한다.
JOB: "매주 월요일마다 운동을 하고 온다."
Step1:"헬스장에 간다"
Step2:"운동을 한다"
Step3:"집으로 간다"
주로 간단한 작업을 처리할 때 쓰는 인터페이스로 하나의 트랜잭션으로 작업을 모두 처리한다.
ItemProcessor
- Reader 에서 읽어온 Item 의 데이터로 작업을 처리하는 인터페이스
- 대표적으로 ItemProcessor<I, O> 같은 인터페이스로 I 타입의 객체를 받아 O 타입의 객체로 반환 처리한다.
ItemWriter
- Chunk Size 단위로 작업이 처리된다.
Job이 실행되며 생성되는 최상위 계층의 테이블
job_name과 job_key를 기준으로 하나의 row가 생성되며, 같은 job_name과 job_key가 저장될 수 없다.
job_key는 BATCH_JOB_EXECUTION_PARAMS에 저장되는 Parameter를 나열해 암호화해 저장
Job이 실행되는 동안 시작/종료 시간, job 상태 등을 관리
Job을 실행하기 위해 주입된 parameter 정보 저장
Job이 실행되며 공유해야할 데이터를 직렬화해 저장
Step이 실행되는 동안 필요한 데이터 또는 실행된 결과 저장
Step이 실행되며 공유해야할 데이터를 직렬화해 저장
https://velog.io/@jojogreen91/Spring-Batch-%EC%9D%98-%EA%B8%B0%EB%B3%B8
https://deeplify.dev/back-end/spring/batch-architecture-and-components
https://hesh1232.tistory.com/184
https://gngsn.tistory.com/178?category=942983
https://ahndy84.tistory.com/19
https://deeplify.dev/back-end/spring/batch-architecture-and-components