Spring Batch
대용량 일괄처리를 위해 설계된 배치 프레임워크
ex) 일관되고 반복적인 작업, 트랜잭션 관리, logging/trace 모니터링 등 대용량 레코드 처리
- Job이라는 단위로 배치 작업을 분류한다.
- 한 개의 Job은 한 개 이상의 Step을 가진다.
- Step 안에는 Tasklet 또는 {Reader, Processor, Writer } 묶음이 존재한다.
Batch 프로세스
단계 1) Batch Scheduler
spring batch 자체는 configuration bean을 통해 Job이 실행될 경우 어떤 일을 처리할지 세팅시켜주기만 할 뿐이므로,
Scheduler가 필요하다.
단계 2) JobRepository
배치를 수행하는데 필요한 object를 포함하고 있다. (Job, JobLauncher, Step 등)
배치 수행과 관련된 CRUD 처리를 한다.
단계 2-1) Job
배치 처리 과정을 하나의 단위로 만들어 놓은 객체 (최상단)
단계 2-2) JobLauncher
Job을 실행시키는 역할
우리가 직접 컨트롤할 일은 없다.
단계 2-3) Step
Job을 구성하는 독립적인 작업 단위
실제 배치가 실행되는 처리를 정의하고 제어하는데 필요한 모든 정보를 가지고 있는 객체
- step의 실행단위
- 실행단위 1) Task
- 단일 작업 기반으로 처리한다.
- ex) 한가지 이상의 CURD가 발생하는 task 에 대해 일괄적으로 처리하는 경우 (복잡한 로직 수행 job)
- Tasklet 구현체 사용
- 실행단위 2) Chunk
- 하나의 큰 덩어리를 n개씩 나눠서 실행, 한번에 Write
- ex) 대용량 데이터에 대해 단순 처리
- ItemReader, ItemProcessor, ItemWriter를 사용하여 ChunkOrientedTasklet 구현체 사용
- 실행단위 1) Task
단계 3) ItemReader
대상이 되는 데이터를 읽는데 사용되는 객체
읽는 방법 : DB connection , File I/O
단계 4) ItemProcessor
Read와 Write의 중간 단계에서 가공 역할
필수 단계는 아니다.
단계 5) ItemWriter
Batch의 마지막 단계
가공된 데이터를 출력하는 역할
구현..
Spring batch 5.0 업그레이드가 되면서 문법이 바뀌었다.
최소 Java 17이 필요하다.
<메인 Application 클래스에 추가하기>
@EnableBatchProcessing
배치 기능 활성화
<JobConfig class 생성>
@Configuration
설정을 위해 사용되는 Bean 임을 명시
@RequiredArgsConstructor
해당 어노테이션을 통한 생성자 주입 (@Autowired 권장하지 않음)
<Job, Step 생성>
JobBuilderFactory, StepBuilderFactory 문법이 지원 중단됐다.
❗ Builder에서 JobRepository를 명시적으로 제공하는 방식을 권장한다.
<ItemReader 생성>
batch 를 통해 처리하고자 하는 데이터를 Read하는 부분
<ItemWriter 생성>
batch를 통해 처리된 데이터에 대한 출력을 하는 부분
참조
'개발공부 > JAVA Spring' 카테고리의 다른 글
[커리어리 글 공유] 주니어 자바 개발자를 위한 100가지 질문 (1) (0) | 2023.12.04 |
---|---|
Spring MVC vs WebFlux 패턴 비교하기 (0) | 2023.08.13 |
[Spring Boot] JWT 튜토리얼 [chap.1~3] - 인프런 강의 (0) | 2023.07.01 |
[SpringBoot 통신] RestTemplate, WebClient (0) | 2023.05.09 |
객체지향 패러다임 (0) | 2023.04.12 |
댓글