인프런 커뮤니티 질문&답변
StepBuilderFactory, JobBuilderFactory Inspection 'Incorrect autowiring in Spring bean components' options
작성
·
601
0




안녕하세요 ! 강의 듣고 있는데 실습해보고 싶어서 계속 따라하는데 빈 등록이 자꾸 안된다고 뜹니다 ㅠ 혹시 호환성에 대해 문제가 있을까바 검색해봤는데도 호환성에 대해서는 잘 작동한다고도 하는데 왜 자꾸 빈으로 등록이 안되는걸까요 ?
spring boot 3.3.2 사용하고 jdk는 17 사용합니다.
제가 지금까지 해본것은
1. @RequiredArgsConstructor 을 이용한 의존성 주입
2. 생성자를 생성하여 @Autowired를 사용
3. batch 호환성에 대한 문제
아니면 혹시 Maven으로만 작성해서 그런걸까요 ? 답변 부탁드립니다 ㅠ
답변 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
안녕하세요, 인프런 AI 인턴입니다.
형동님께서 겪고 계신 문제는 Spring Batch의 JobBuilderFactory와 StepBuilderFactory 타입의 빈을 찾을 수 없어 발생하는 것으로 보입니다. 이 문제는 Spring Boot 및 Spring Batch의 버전 호환성, 빈의 올바른 등록 및 자동 구성(Auto-configuration)의 실패로 인해 발생할 수 있습니다. 형동님께서 Spring Boot 3.3.2 버전과 JDK 17을 사용하고 계시다고 했는데, 이는 최신 버전의 Spring Boot를 사용하고 계신 것으로, 여기서 버전 호환성 문제가 발생할 소지가 있습니다.
Spring Batch의 JobBuilderFactory와 StepBuilderFactory를 사용하기 위해서는 @EnableBatchProcessing 어노테이션이 필수적으로 적용되어 있어야 합니다. 이 어노테이션은 Spring Batch의 자동 구성을 활성화하고 필요한 기본 설정 및 빈을 등록하는 역할을 합니다.
검토해보실 사항:
@EnableBatchProcessing 어노테이션 적용:
@SpringBootApplication과 같은 설정 클래스에@EnableBatchProcessing어노테이션이 적용되어 있는지 확인해주세요.버전 호환성: Spring Boot와 Spring Batch 버전 간의 호환성에 대해 확인해보시는 것이 좋습니다. 특히, 최신 버전을 사용하실 때는 그에 맞는 Spring Batch 버전을 사용하는지 확인이 필요합니다.
Gradle 또는 Maven 설정: 의존성 관리 도구로 Gradle 또는 Maven을 사용하실 경우, Spring Batch 관련 의존성이 올바르게 구성되어 있는지 검토해보세요.
IDE 플러그인 및 설정: 사용하시는 IDE에 따라 Spring Boot 및 Spring Batch에 대한 플러그인 또는 관련 설정이 올바르게 적용되어 있는지도 확인해보시기 바랍니다. IntelliJ IDEA 같은 IDE에서는 Lombok 등의 추가적인 플러그인이 필요할 수 있습니다.
비슷한 문제를 겪고 계신 다른 수강생들의 질의응답을 참고하실 수 있습니다. 예를 들어, Spring Batch Plugin 설치 관련 질문에서 Spring Batch Plugin 설치 이유 및 문제 해결 방법에 대한 내용이 언급되었습니다. IntelliJ IDEA에서 Spring Batch 작업을 위한 특정 플러그인을 설치하는 것이 문제 해결에 도움이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






짱입니다!