반응형
Spring Batch에서 @JobScope사용시 아래와 같은 에러가 발생할 수 있다.
Scope 'job' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton;
기존코드는 아래와 같았다.
@JobScope를 빼면 문제없이 동작하는 코드가 @JobScope만 달면 빈 생성에서 에러가 발생했다.
@Bean(name = "testJob")
public Job testJob(JobCompletionNotificationListener jobCompletionNotificationListener){
return jobBuilderFactory.get("job1")
.incrementer(new CurrentTimeIncrementer())
.listener(jobCompletionNotificationListener)
.flow(step1(null,null,null))
.end()
.build();
}
@Bean
@JobScope
public Step step1(MyBatisPagingItemReader<Test> reader
, CustomItemWriter customItemWriter
, ChunkListenerImpl chunkListener){
return stepBuilderFactory.get("step1")
.<Test, Test>chunk(10)
.reader(reader)
.faultTolerant()
.retryLimit(10)
.retry(Exception.class)
.processor(mySqlBatchProcessor())
.writer(customItemWriter)
.listener(chunkListener)
.build();
}
코드를 아래와같이 변경하면 정상적으로 동작한다.
@Bean(name = "testJob")
public Job testJob(JobCompletionNotificationListener jobCompletionNotificationListener){
return jobBuilderFactory.get("job1")
.incrementer(new CurrentTimeIncrementer())
.listener(jobCompletionNotificationListener)
.start(step1(null, null, null))
.build();
}
@Bean
@JobScope
public Step step1(MyBatisPagingItemReader<Test> reader
, CustomItemWriter customItemWriter
, ChunkListenerImpl chunkListener){
return stepBuilderFactory.get("step1")
.<Test, Test>chunk(10)
.reader(reader)
.faultTolerant()
.retryLimit(10)
.retry(Exception.class)
.processor(mySqlBatchProcessor())
.writer(customItemWriter)
.listener(chunkListener)
.build();
}
자세한 내용은 아래 클래스들을 분석해보시면 알 수 있을거라고 생각됩니다.
참고사항
반응형
'개발 > Spring' 카테고리의 다른 글
[Spring] Junit5로 예외테스트 하기 (0) | 2020.12.06 |
---|---|
[Spring] PostgreSQL yml 설정 (0) | 2020.12.06 |
[Junit5] org.junit.platform.commons.JUnitException: @BeforeAll method must be static unless the test class is annotated with @TestInstance(Lifecycle.PER_CLASS). (0) | 2020.11.09 |
[Junit5] 아직도 @RunWith(SpringRunner.class)를 쓰는가? (0) | 2020.11.01 |
[Spring Boot] spring-data-redis 간단하게 적용해보기 (0) | 2020.07.24 |
댓글