Programing/Java & Spring

세무의 코딩일기 : JobRegistry @Autowird Bean이 없다고 오류 날 때 처리 방안

세기루민 2024. 2. 2. 14:36
728x90

회사에서 일을 하다가 굳이 리펙토링 할 필요는 없는데...

어떨결에 리펙토링을 하려고 Batch 관련 API 코드를 까보던 중에 AutoWird Bean이 없다고 오류가 떴다.

실질적으로 서비스 작동에는 문제가 없어서 크게 이슈되는 상황은 아니였지만 혹시 몰라서 글을 적어본다.

 

추가로 Spring Batch 5.x 버전을 사용한다면 위의 이슈는 없을 것으로 보인다. 

다만, 5.x 버전보다 낮은 버전을 이용할 경우 실제 서비스 작동에는 문제가 없지만 

JobRegistry가 Bean이 없어서 빨간줄이 뜨는 경우들이 존재할 것이다. 

 

버전에 따라 다른 것으로 보이지만 내가 사용한 4.x 버전의 JobRegistry 인터페이스 로직이다.

보면 Bean으로 등록되어 있지 않다. 

 

이에 따라 Bean으로 수동으로 등록하거나 예외가 발생하지 않도록 처리가 필요하다.

방법은 2가지로 아래와 같다. 

 

// 1. AutoWire False
public class JobRegistryBeanUtils { 
	
    @Autowired(required = false)
	private JobRegistry jobRegistry;
    ...
}

// 2. 조건부 Bean 등록 
@ConditionalOnBean(JobRegistry.class)
public class JobRegistryBeanUtils { 	
    @Autowired
	private JobRegistry jobRegistry;
    ...
}

 

내가 채택한 방식은 1번 방식을 채택했다. 

그 이유는 2번의 경우 Method 단위로 설정해줄 수 없기 때문이며 실질적인 로직이 작동되는데에 큰 영향이 없음으로 1번(Autowire False)를 이용하여 처리하려고 한다.

 

 

728x90