티스토리 뷰
Spring Batch 5.0 버전 부터 많은 부분이 바뀌었다. 이 부분을 정리해보고자 한다.
1. @EnableBatchProcessing
트랜잭션 포함 제거
이전 버전까지는 @SpringBootApplication을 명시하는 Application 클래스에 @EnableBatchProcessing을 명시하여 PlatformTransactionManager 빈을 Application Context에 생성하였다.
이에 따라 Spring Batch Infrastructure에서 트랜잭션을 사용할 수 있었다.
그러나 5.0 버전 부터는 해당 어노테이션을 명시하지 않더라도 트랜잭션을 사용할 수 있다.
데이터소스, 트랜잭션 필수
이전 버전까지는 in-memory 저장소를 활용하여 jobRepository를 구현하도록 지원하였다.
5.0버전 부터는 해당 기능의 지원을 끝내고, H2 + JDBC를 활용한 구현을 활용하기 때문에 DataSource, PlatformTransactionManager 빈을 필수적으로 등록해야한다.
새로운 속성 추가
@EnableBatchProcessing(dataSourceRef = "batchDataSource", transactionManagerRef = "batchTransactionManager")
public class MyJobConfiguration {
위의 예제와 같이 dataSourceRef, transactionManagerRef 속성이 추가되었다.
이슈 해결
이전 버전까지는 프로젝트를 jar파일로 만들어 java -jar 명령어를 실행하면 빈으로 등록된 모든 Job이 실행되었으나 5.0 버전에서 실행되지 않는 버그가 발생했다.
→ @EnableBatchProcessing을 제거함으로써 실행되었다.
2. BuilderFactory 제거
JobBuilderFactory, StepBuilderFactory Deprecated
JobBuilderFacotory와 StepBuilderFactory는 5.0 버전부터 deprecated되었으며 5.2 버전에는 제거될 예정이다.
따라서 아래와 같은 패턴으로 JobBuilder, StepBuilder를 사용한다.
@Bean
public Step step(JobRepository jobRepository, PlatformTransactionManager platformTransactionManager) {
return new StepBuilder("step1", jobRepository)
.tasklet(
(contribution, chunkContext) -> {
System.out.println("Hello, World!");
return RepeatStatus.FINISHED;
},
platformTransactionManager)
.build();
}
'공부 > Spring Batch' 카테고리의 다른 글
Spring Batch의 JobRepository 알아보기 (0) | 2024.03.31 |
---|---|
Spring Batch의 Step 알아보기 (0) | 2024.03.16 |
Spring Batch의 Job 알아보기 (0) | 2024.03.10 |