2011-03-23 5 views
0

몇 가지 조건에 따라 스프링 IoC 컨테이너에 콩을 주입하는 알려진 방법이 있습니까? 예 : 나는 두 콩이 있습니다Spring IoC 컨테이너의 조건

<bean id="aaa" class="My"/> 
<bean id="bbb" class="My"/> 

을 ... 그리고 다음 규칙에 따라 다른 콩에 주입합니다 :

주입 "AAA" "AAA"는 널 (null)이 아니거나에서 "BBB"를 주입하는 경우 다른 경우

감사

+0

FactoryBean을 사용하여이 문제를 직접 해결했습니다. – Raman

답변

3

당신은 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을 찾는다.

+0

...'ServiceConfig' 자체를 XML의 bean으로 선언하십시오. – skaffman