Batch
시작과 종료가 있고, 특정 시간에 일련의 작업이 순서대로 진행되는 프로그램
Spring Batch의 기본 구성
![]()
Job
배치의 기본적인 단위
Step
Job을 구성하는 배치 작업의 순차적이고 독립적인 단위
예시
JOB: "아침 루틴을 수행한다."
Step 1: "일어나서 입 헹구고 물 한잔 마신다."
Step 2: "이불 정리한다."
Step 3: "아침을 먹는다."
Step 4: "커피를 마신다."
Tasklet vs Chunk
![]()
스프링 배치를 처리하는 대표적인 방식들
Tasklet
간단한 실행 처리시 사용
@FunctionalInterface
public interface Tasklet {
@Nullable
RepeatStatus execute (StepContribution contribution, ChunkContext chunkContext) throw Exception;
}
execute() 구현해서 로직 설정
Chunk
아이템 기반으로 나눠서 로직을 수행 or 복잡한 실행
- ItemReader
- 한 번에 하나씩 입력을 나타내는 인터페이스
- ItemProcessor
- 아이쳄에 대한 비지니스 처리를 나타내는 인터페이스
- ItemWrite
- 스텝에서 출력을 나타내는 인터페이스
코드 예시
@Configuration
@RequiredArgsConstructor
pulbic class Test {
private final JobBuilderFactory jobBuilderFactory;
private final StepBuilderFactory stepBuilderFactory;
@Bean
public Job batchJob() {
return jobBuilderFactory.get("batchJob")
.start(step1())
.on("FAILED")
.to(step2())
.on("FAILED")
.stop()
.from(step1())
.on("*")
.to(step3())
.next(step4())
.from(step2())
.on("*")
.to(step5())
.end()
.build()
}
// ex
private Step step1() {
return stepBuilderFactory.get("step1")
.tasklet((contribution, chunkContext) -> {
// 필요 로직
return RepeatStatus.FINISHED;
})
.build();
}
}
Job 메서드 설명
start(Step): 시작 스텝 입력- 분기
on(String): 실행 결과를 받아서 매칭되면 분기처리.TransitionBuilder반환to(Step):on(String)에서 분기된 로직의 스텝stop(), fail(), end(): flow 중지, 실패, 종료.FlowBuilder반환
from(Step): 이전 단계에서 정의한 flow 불러오기next(Step): 다음에 실행 할 스텝end():FlowBuilder를 종료하고SimpleFlow객체 생성
Step 메서드 설명 (Tasklet)
get(String):StepBuilder의 이름을 정하고StepBuilder객체 반환tasklet():execute()구현.TaskletBuilder객체 반환build():TaskletStep객체 반환
참고
'Java > Spring' 카테고리의 다른 글
| SpringMVC (2) - Servlet Container와 Spring Container (0) | 2023.04.20 |
|---|---|
| SpringMVC (1) - WAS와 WebServer (0) | 2023.04.19 |
| 애너테이션 (0) | 2023.02.05 |
| 스프링 컨테이너 (0) | 2023.02.05 |
| Spring MVC (0) | 2023.02.04 |