properties 에 따른 @Qualifier(${variable}) 처리

JAVA/SpringBatch|2020. 5. 27. 20:14

properties에 따라서 Injection해야하는 Bean을 변경해야 했습니다

물론 Profile을 통해서 Bean 등록을 바꾼다던지 여러 방법이 있겠지만

 

프레임워크 엔진에는 구현체가 여러개가 있고

사용자가 선택해서 쓸수 있도록 제공하기 위해 Profile을 통해서는 애매하여

@Qualifier에 변수를 적용하여 처리를 시도해봤습니다.

 

@Autowired

@Qualifier("${user.handler:simpleHandler}")

user.handler에 bean명이 설정되어있으면 설정된 bean값을 쓰고 아니면 기본값인 simpleHandler Bean을 주입하길 원했지만 동작하지 않았습니다

(@ComponentScan이나 @ImportResource 도 다 변수가 적용됬는데 @Qualifier는 동작을 안했습니다..;;)

 

그래서 어떻게 처리를 할까 고민 하다

기본으로 돌아가서 ApplicationContext.getBean()을 활용하는 방법으로 일단 적용해두었습니다.

 

@Value("${user.handler:simpleHandler}")
String handlerBeanName;

@PostConstruct
private void postConstruct() {
	this.handler = applicationContext.getBean(handlerBeanName);
}

 

추후 @Qualifier는 어떤 단계에서 어떤방식으로 처리하는지 봐야할것 같습니다.

댓글()