인프런 커뮤니티 질문&답변

김도연님의 프로필 이미지
김도연

작성한 질문수

스프링 배치

어플리케이션 예제 (2)

5.0 버전으로 마이그레이션

작성

·

1.2K

0

기존에 하던 프로젝트의 스프링 버전이 3.0.0이라 배치의 버전 또한 5.0을 사용하게 됐습니다. excute 메소드가 실행되지 않는 이유를 알 수 있을까요..??


package com.jojoldu.book.freelecspringbootwebservice.config;

import lombok.RequiredArgsConstructor;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.StepContribution;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.configuration.support.DefaultBatchConfiguration;
import org.springframework.batch.core.job.builder.JobBuilder;
import org.springframework.batch.core.repository.JobRepository;
import org.springframework.batch.core.scope.context.ChunkContext;
import org.springframework.batch.core.step.builder.StepBuilder;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.repeat.RepeatStatus;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
@EnableBatchProcessing
@RequiredArgsConstructor
public class HelloJobConfiguration extends DefaultBatchConfiguration {

    @Bean
    public Job myJob(JobRepository jobRepository, Step myStep1, Step myStep2) {
        System.out.println("this is job");
        return new JobBuilder("myJob", jobRepository)
                .start(myStep1)
                .next(myStep2)
                .build();
    }

    @Bean
    public Step myStep1(JobRepository jobRepository) {
        System.out.println("this is step1");
        return new StepBuilder("myStep1", jobRepository)
                .tasklet(new Tasklet() {
                    @Override
                    public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                        System.out.println("step1 started");
                        return RepeatStatus.FINISHED;
                    }
                }, getTransactionManager())
                .build();
    }

    @Bean
    public Step myStep2(JobRepository jobRepository) {
        System.out.println("this is step2");
        return new StepBuilder("myStep2", jobRepository)
                .tasklet(new Tasklet() {
                    @Override
                    public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                        System.out.println("step2 started");
                        return RepeatStatus.FINISHED;
                    }
                }, getTransactionManager())
                .build();
    }
}

답변 2

1

정수원님의 프로필 이미지
정수원
지식공유자

강의에서 제공하는 소스와는 많이 다른 것 같습니다.

소스를 실행해 봐야 정확한 원인을 알 수 있을 것 같습니다.

소스 공유 가능할까요?

그리고 버전차이로 인한 부분은 저도 자세하게 살펴보지 않았기 때문에 정확한 답변이 어려울 수 있는점 양해 부탁드립니다.

0

@EnableBatchProcessing 어노테이션을 제외하시면 됩니다.
스프링 배치 5.x 에서는 더이상 @EnableBatchProcessing 어노테이션을 필요하지 않게 되었습니다.

https://github.com/spring-projects/spring-batch/issues/4232

김도연님의 프로필 이미지
김도연

작성한 질문수

질문하기