몇 가지 조건에 따라 스프링 IoC 컨테이너에 콩을 주입하는 알려진 방법이 있습니까? 예 : 나는 두 콩이 있습니다Spring IoC 컨테이너의 조건
<bean id="aaa" class="My"/>
<bean id="bbb" class="My"/>
을 ... 그리고 다음 규칙에 따라 다른 콩에 주입합니다 :
주입 "AAA" "AAA"는 널 (null)이 아니거나에서 "BBB"를 주입하는 경우 다른 경우
감사
몇 가지 조건에 따라 스프링 IoC 컨테이너에 콩을 주입하는 알려진 방법이 있습니까? 예 : 나는 두 콩이 있습니다Spring IoC 컨테이너의 조건
<bean id="aaa" class="My"/>
<bean id="bbb" class="My"/>
을 ... 그리고 다음 규칙에 따라 다른 콩에 주입합니다 :
주입 "AAA" "AAA"는 널 (null)이 아니거나에서 "BBB"를 주입하는 경우 다른 경우
감사
당신은 JavaConfig 사용할 수 있습니다 - 거기에이 논리를 구현하는 자바 코드를 사용할 수 있습니다. 나는 그것을 사용하지 않지만 문서에서 예제를 복용 적이 :
@Configuration
public class ServiceConfig {
private @Resource(name="aaa") Aaa aaa;
private @Resource(name="bbb") Aaa bbb;
public @Bean TransferService transferService() {
TransferService service = new TransferServiceImpl();
if (aaa != null) {
service.setProperty(aaa);
} else {
service.setProperty(bbb);
}
return service;
}
}
또 다른 옵션은 그 논리를 캡슐화하는 FactoryBean
을 사용하는 것입니다 - 공장 콩이 상황에서 빈을 조회 할 수 있습니다, 그리고 경우에 발견 - 수익을 그것. 찾지 못하면 - 다른 bean을 찾는다.
...'ServiceConfig' 자체를 XML의 bean으로 선언하십시오. – skaffman
스프링 3.0을 사용하는 경우 SpEL - Expression langauge support을 사용하면됩니다.
설명서에 링크하는 것보다는 질문에 맞는 예를 들어 주시겠습니까? – skaffman
FactoryBean을 사용하여이 문제를 직접 해결했습니다. – Raman