
Spring Batch 5를 통해 쿠폰 만료 처리 배치를 구현하던 도중, 배치 자체는 이상없이 돌아가지만 로그에 아래와 같은 WARN이 잔뜩 뜨는 것을 확인했습니다.
에러는 아니고, WARN일 뿐이지만, 프로젝트를 새로 실행할 때마다 계속 뜨고 있어서 이유를 확인하고, 수정해보려고 합니다.

찾아보니 Spring Boot 3.2와 Spring Batch 5.0 이상에서 발생하는 문제로, 근본적으로 JobRegistryBeanPostProcessor가 자동으로 설정되기 때문에 일부 빈들이 BeanPostProcessor의 처리를 완전히 받기 전에 초기화를 시도하는 문제가 발생하며 경고 메시지가 발생하는 것이라고 합니다.
그렇기 때문에 먼저, BeanDefinitionRegistryPostProcessor를 통해 jobRegistryBeanPostProcessor 빈을 제거했습니다.
그리고 spring-batch:v.5.1.1에서 제공해주는 JobRegistrySmartInitializingSingleton을 추가해 해결했습니다.
@Configuration
public class BatchConfiguration {
@Bean
public static BeanDefinitionRegistryPostProcessor jobRegistryBeanPostProcessorRemover() {
return registry -> registry.removeBeanDefinition("jobRegistryBeanPostProcessor");
}
@Bean
public JobRegistrySmartInitializingSingleton jobRegistrySmartInitializingSingleton(JobRegistry jobRegistry) {
return new JobRegistrySmartInitializingSingleton(jobRegistry);
}
}
Spring Boot 3.2에서의 Batch 처리 시 BeanPostProcessorChecker 경고
Add JobRegistrySmartInitializingSingleton #4521