1. Scope 란?
- 생명주기를 관리하기 위해 사용하는 어노테이션
- Spring 에서 bean으로 주입하면 기본적으로 싱글톤을 유지한다.
- Singleton 을 사용하지 않는 경우 Scope("prototype") 을 지정하여 주입이 일어날 때 마다 새로운 인스턴스를 생성한다.
2. JobScope 란?
- batch 에서 생명주기를 Job과 함께하는 어노테이션
- JobScope를 별도로 지정하지 않고 스케쥴러를 사용하여 반복 작업을 하면 이전에 작업한 이후부터 작업이 실행된다.
EX> jdbcItemReader를 사용한 경우, 다음 job 실행시 1page 부터 시작하는게 아니라 마지막 page 에서 부터 시작
- @JobScope를 사용하여 인스턴스로 Job의 생명주기와 일치하도록 설정 할 수있다.
/**
* DB 에서 tripId를 꺼내온 후 해당하는 id의 추천 list를 분석해 Redis에 저장
*/
@JobScope
@Bean
public Step tripLikeRecommendStep(){
return new StepBuilder(TRIP_LIKE_RECOMMEND_STEP, jobRepository)
.<Long, DataSet>chunk(completionPolicy(), new DataSourceTransactionManager(dataSource))
.reader(jdbcPagingItemReader())
.processor(itemProcessor())
.writer(this::writeChunkDataToRedis)
.transactionManager(platformTransactionManager)
.taskExecutor(taskExecutor())
.listener(jobExecutionListener(taskExecutor()))
.build();
}
3. StepScope 란?
- batch 에서 생명주기를 Step과 함께하는 어노테이션
- @StepScope를 사용하여 인스턴스로 step의 생명주기와 일치하도록 설정 할 수있다.
- tasklet 기반 작업일 때, tasklet 에 지정할 수 있다.
'Spring Batch' 카테고리의 다른 글
[Spring Batch] ItemWriter (0) | 2024.05.07 |
---|---|
[Spring Batch] ItemProcessor (0) | 2024.05.07 |
[Spring Batch] ItemReader (0) | 2024.05.07 |
[Spring Batch] Job 과 Step (0) | 2024.05.06 |
[Spring Batch] 스프링 배치 란? (0) | 2024.05.06 |