1. SpringBatch
Job -> 여러개의 Step (① Tasklet ②Chunck) 로 구성되어 있음.
1.1. job
Job Instance : job 수행시 인스턴스 객체의 단위 (성공적으로 종료된 동일한 인스턴스 수행시, 중복 수행을 막기 위해 exception이 발생된다. )
1.2. ① step (Tasklet )
StepExecution : Job 인스턴스 수행시 , 세부 로직 수행 내역으로 read, write ,count 의 상세 내역을 확인 할 수 있다.

※ Step 수행 단위 : tasklet
.next()를 이용하여 다중 step을 구성할 수 도 있고 , step flow를 통해 다중 step을 구현 할 수 있다.
다만 step flow를 통해 다중 step을 구현 할 경우에, tasklet 에 대한 상태값은 명시적으로 'return RepeatStatus.FINISHED ' 를 선언하여 현재 tasklet 작업이 성공적으로 완료되었음을 알린다.
' ExitStatus.COMPLETED' 를 선언하여 Step 작업이 성공적으로 완료되었음을 알린다.
Tasklet의 RepeatStatus와 차이점
- RepeatStatus: Tasklet이 완료되었는지 여부를 나타냅니다.
- ExitStatus: Step이나 Job이 전체적으로 완료되었는지, 그리고 어떤 상태로 완료되었는지를 나타냅니다.
스텝 실행 후 상태 설정
스텝이 실행된 후, Spring Batch는 ExitStatus를 설정하여 스텝이 어떤 상태로 완료되었는지 나타냅니다.
기본적으로 Tasklet이 RepeatStatus.FINISHED를 반환하면, 스텝은 ExitStatus.COMPLETED 상태로 완료됩니다.
Tasklet은 Lamda 를 사용하여 생성 할 수 도 있고 , MethodInvokingTaskletAdapter를 사용하여 구현 할 수 있다.
Lamda를 사용하면 작은 Tasklet을 직접 작성하여 쉽게 구현 할 수 있다.
반면의 기존의 method를 Tasklet으로 구현하고 관리하기 위해서는 MethodInvokingTaskletAdapter를 사용하여 구현한다.
1.3. ② step (Chunk)

- 읽기(Read) — Database에서 배치처리를 할 Data를 읽어온다
- 처리(Processing) — 읽어온 Data를 가공,처리를 한다 (필수사항X)
- 쓰기(Write) — 가공,처리한 데이터를 Database에 저장한다.

※ Step 수행 단위 : Chunk
chunck 기반 Tasklet 작성시 , 'return RepeatStatus.Finished' 혹은 'return RepeatStatus.ExitStatus' 를 명시적으로 사용
반환값이 없을 경우, 기본적으로 Tasklet이 완료되었다고 간주하나 코드의 가독성과 유지보수성을 위해 사용하는 것을 권장
spring batch에서 page = chunk * n 으로 해야 성능적으로 가장 좋다
'WEB > BACKEND' 카테고리의 다른 글
JWT(Json Web Token) 개념 정리 (Java-jwt) (0) | 2024.07.13 |
---|---|
[SpringBatch] 성능 속도 개선 확인해보기 (0) | 2023.12.14 |
[Nginx] AWS EC2(Cloud9) Nginx 설치하기 (0) | 2023.04.19 |
[Nginx] Nginx 개념 (0) | 2023.04.07 |
[SPRING] 싱글톤에 대해서 (0) | 2022.07.28 |