Spring Batch 4 -> 5 업데이트 Troubleshooting (JobBuilderFactory, StepBuilderFactory)

devsajaya·2023년 12월 31일
0

스프링3버전대 부터 Spring Batch 5를 사용해야하는데, 배치 4 에서 5로 업데이트되는 과정에서 많은 업데이트가 있다.

우선 JobBuilderFactory와 StepBuilderFactory를 더이상 사용할 수 없는데, JobBuilder와 StepBuilder를 사용하면 된다. 아래는 스텝로그를 찍는 기본 예제이다.

@Configuration
public class HelloJobConfiguration {

    @Bean
    public Job helloJob(JobRepository jobRepository, Step helloStep1, Step helloStep2) {
        return new JobBuilder("helloJob", jobRepository)
                .start(helloStep1)
                .next(helloStep2)
                .build();
    }

    @Bean
    public Step helloStep1(JobRepository jobRepository, PlatformTransactionManager tx) {
        return new StepBuilder( "helloStep1", jobRepository)
                .tasklet((contribution, chunkContext) -> {
                    System.out.println("====================================");
                    System.out.println(" helloStep1 executed ");
                    System.out.println("====================================");
                    return RepeatStatus.FINISHED;
                }, tx).build();
    }

    @Bean
    public Step helloStep2(JobRepository jobRepository, PlatformTransactionManager tx) {
        return new StepBuilder( "helloStep2", jobRepository)
                .tasklet((contribution, chunkContext) -> {
                    System.out.println("====================================");
                    System.out.println(" helloStep2 executed ");
                    System.out.println("====================================");
                    return RepeatStatus.FINISHED;
                }, tx).build();
    }


}

참고로 @EnableBatchProcessing 어노테이션을 제거해야 제대로 로그가 출력된다.
메인 어플리케이션 클래스도 첨부한다.

@SpringBootApplication
public class SpringBatchApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringBatchApplication.class, args);
	}

}

링크는 스프링 공식 깃헙에서 기존 코드를 배치5 버전 마이그레이션 가이드이다.

0개의 댓글