2024.03.09 - [Spring/Batch Programming] - Spring Batch 실습(3)
이전글에서 글로 구조를 시각화 해봤는데 직접 구현된 코드를 보자
@Configuration
public class DormantBatchConfiguration {
@Bean
public Job dormantBatchJob(
Step preDormantBatchStep,
Step dormantBatchStep,
DormantBatchJobExecutionListener listener
){
return new StepJobBuilder()
.start(preDormantBatchStep)
.next(dormantBatchStep)
.build();
}
@Bean
public Step dormantBatchStep(
AllCustomerItemReader itemReader,
DormantBatchItemProcessor itemProcessor,
DormantBatchItemWriter itemWriter
){
return Step.builder()
.itemReader(itemReader)
.itemProcessor(itemProcessor)
.itemWriter(itemWriter)
.build();
}
@Bean
public Step preDormantBatchStep(
AllCustomerItemReader itemReader,
PreDormantBatchItemProcessor itemProcessor,
PreDormantBatchItemWriter itemWriter
){
return Step.builder()
.itemReader(itemReader)
.itemProcessor(itemProcessor)
.itemWriter(itemWriter)
.build();
}
//휴면전환 예정 1주일전인 사람에게 메일 발송
}
이전글에서 추가 조건 이었던 휴먼전환 예정 1주일전인 사람에게 메일 발송까지 봤을때, Job안에 Step이 있고, Step은 3단계를 걸치는 것을 한번에 볼 수 있다!
테스트 코드도 성공 되는 것을 볼 수 있다.
정리해보면 Job에 두가지 요구조건인 1. 휴먼계정 전환과 2. 휴먼계정 전환 1주일전 알림이 Step으로 들어가 있는 것을 볼 수 있다. 이제 각 클래스들의 관계를 다이어그램으로 살펴보겠다.
이러한 패턴을 디자인 패턴중하나인 Template Method Pattern 이라고 한다.
자주 변하지 않는 로직은 슈퍼 클래스에 두고, 자주 변하는 로직은 추상메소드로 정의하고, 서브클래스에서 오버라이드 해서 사용한다.
단, 상속을 받기때문에 슈퍼 클래스의 변동이 있을경우 서브클래스도 종속적으로 변하게 된다. 그래도 장점이 훨씬 많기 때문에 이러한 패턴을 쓴다.
이렇게 해서 스프링 배치가 어떻게 동작하고 있는지 원리를 파악했다. 이제부턴 실전으로 적용해볼것이다.
2024.03.12 - [Spring/Batch Programming] - Spring Batch 도메인 용어, 실전
'Spring > Batch Programming' 카테고리의 다른 글
Spring Batch Job (0) | 2024.03.13 |
---|---|
Spring Batch 도메인 용어, 실전 (3) | 2024.03.12 |
Spring Batch 실습(3) (0) | 2024.03.09 |
Spring Batch 실습(2) (0) | 2024.03.06 |
Spring Batch 실습(1) (1) | 2024.03.06 |