작성
·
211
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 작업을 위한 특정 플러그인을 설치하는 것이 문제 해결에 도움이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
짱입니다!