티스토리 뷰

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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함