inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

Hello Spring Batch 시작하기

StepBuilderFactory, JobBuilderFactory Inspection 'Incorrect autowiring in Spring bean components' options

661

형동

작성한 질문수 1

0

스크린샷 2024-07-31 오후 7.09.11.png스크린샷 2024-07-31 오후 7.09.25.png스크린샷 2024-07-31 오후 7.10.46.png스크린샷 2024-07-31 오후 7.16.25.png

안녕하세요 ! 강의 듣고 있는데 실습해보고 싶어서 계속 따라하는데 빈 등록이 자꾸 안된다고 뜹니다 ㅠ 혹시 호환성에 대해 문제가 있을까바 검색해봤는데도 호환성에 대해서는 잘 작동한다고도 하는데 왜 자꾸 빈으로 등록이 안되는걸까요 ?
spring boot 3.3.2 사용하고 jdk는 17 사용합니다.

제가 지금까지 해본것은
1. @RequiredArgsConstructor 을 이용한 의존성 주입
2. 생성자를 생성하여 @Autowired를 사용
3. batch 호환성에 대한 문제
아니면 혹시 Maven으로만 작성해서 그런걸까요 ? 답변 부탁드립니다 ㅠ

spring-boot spring-batch

답변 2

1

형동

Spring Boot 3.x ~ 사용 해결법

package com.sh.springbatch;

import lombok.extern.slf4j.Slf4j;
import org.springframework.batch.core.Job;
import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing;
import org.springframework.batch.core.job.builder.JobBuilder;
import org.springframework.batch.core.repository.JobRepository;
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;
import org.springframework.transaction.PlatformTransactionManager;

@Slf4j
@Configuration
public class MyJobConfig {
    @Bean
    public Job simpleJob1(JobRepository jobRepository, Step simpleStep1) {
        return new JobBuilder("simpleJob", jobRepository)
                .start(simpleStep1)
                .build();
    }
    @Bean
    public Step simpleStep1(JobRepository jobRepository, Tasklet testTasklet, PlatformTransactionManager platformTransactionManager){
        return new StepBuilder("simpleStep1", jobRepository)
                .tasklet(testTasklet, platformTransactionManager).build();
    }
    @Bean
    public Tasklet testTasklet(){
        return ((contribution, chunkContext) -> {
            log.info(">>>>> This is Step1");
            return RepeatStatus.FINISHED;
        });
    }
}

Spring boot : 3.x~ 이상부터는 @EnableProcessing을 사용하지 않는다고 합니다 .
출처 : https://velog.io/@calaf/Spring-Batch-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0-1.-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0#1-spring-batch

0

귀여운 수달

짱입니다!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

형동님께서 겪고 계신 문제는 Spring Batch의 JobBuilderFactoryStepBuilderFactory 타입의 빈을 찾을 수 없어 발생하는 것으로 보입니다. 이 문제는 Spring Boot 및 Spring Batch의 버전 호환성, 빈의 올바른 등록 및 자동 구성(Auto-configuration)의 실패로 인해 발생할 수 있습니다. 형동님께서 Spring Boot 3.3.2 버전과 JDK 17을 사용하고 계시다고 했는데, 이는 최신 버전의 Spring Boot를 사용하고 계신 것으로, 여기서 버전 호환성 문제가 발생할 소지가 있습니다.

Spring Batch의 JobBuilderFactoryStepBuilderFactory를 사용하기 위해서는 @EnableBatchProcessing 어노테이션이 필수적으로 적용되어 있어야 합니다. 이 어노테이션은 Spring Batch의 자동 구성을 활성화하고 필요한 기본 설정 및 빈을 등록하는 역할을 합니다.

검토해보실 사항:

  1. @EnableBatchProcessing 어노테이션 적용: @SpringBootApplication과 같은 설정 클래스에 @EnableBatchProcessing 어노테이션이 적용되어 있는지 확인해주세요.

  2. 버전 호환성: Spring Boot와 Spring Batch 버전 간의 호환성에 대해 확인해보시는 것이 좋습니다. 특히, 최신 버전을 사용하실 때는 그에 맞는 Spring Batch 버전을 사용하는지 확인이 필요합니다.

  3. Gradle 또는 Maven 설정: 의존성 관리 도구로 Gradle 또는 Maven을 사용하실 경우, Spring Batch 관련 의존성이 올바르게 구성되어 있는지 검토해보세요.

  4. IDE 플러그인 및 설정: 사용하시는 IDE에 따라 Spring Boot 및 Spring Batch에 대한 플러그인 또는 관련 설정이 올바르게 적용되어 있는지도 확인해보시기 바랍니다. IntelliJ IDEA 같은 IDE에서는 Lombok 등의 추가적인 플러그인이 필요할 수 있습니다.

비슷한 문제를 겪고 계신 다른 수강생들의 질의응답을 참고하실 수 있습니다. 예를 들어, Spring Batch Plugin 설치 관련 질문에서 Spring Batch Plugin 설치 이유 및 문제 해결 방법에 대한 내용이 언급되었습니다. IntelliJ IDEA에서 Spring Batch 작업을 위한 특정 플러그인을 설치하는 것이 문제 해결에 도움이 될 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

스프링 배치 버전 질문

0

130

1

소스코드가 어디에 있나요?

0

103

2

트랜잭션 예외

0

92

1

질문이 있습니다.

0

132

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

134

2

여러 JOB 설정하는법

0

154

2

강의 자료 다른 방법 있을까요?

0

160

1

JobExecution과 JobExecutionContext와의 관계

0

191

2

특정 job만 실행

1

260

1

Batch 성능 질문

0

153

1

ItemReaderAdapter 종료

0

82

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

182

2

Spring Batch 배포 질문

0

248

2

spring batch 버전

0

237

2

retry count 관련 질문

0

175

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

333

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

237

2

Multithread step과 AsyncItemProcessor

0

205

2

job 재실행

0

256

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

187

1

Multi-threaded-step과 Partitioning 차이 확인

0

179

2

jdbcCursorReader, jdbcPagingReader 질문

0

146

1

step muti-thread 질문

0

112

1

itemSteam open update close 질문

0

114

1