2013-03-20 2 views
3

Spring MVC 애플 리케이션에서 작업 중이고 문제가 발생했습니다. 나는 봄에 익숙하지 않기 때문에 제 일이 조금 어색한 일이라면 용서하십시오. 기본적으로 나는 자바 클래스 ContractList 있습니다. 내 응용 프로그램에서 나는 이러한 콩의 모두 ApplicationContext.xml에 정의되지 않은 것을Spring @Autowire ApplicationContext에 정의되지 않은 동일한 클래스의 두 bean

public class MyClass { 
    @Autowired 
    private ContractList contractList; 

    @Autowired 
    private ContractList correctContractList; 

    .. do something.. 
} 

주 (둘 다 싱글이어야 함)이 클래스의 두 개의 서로 다른 개체가 필요합니다. 주석 만 사용하고 있습니다. 그래서 그들에게 접근하려고 할 때 - contractList와 correctContractList는 결국 같은 객체를 참조하게됩니다. ApplicationContext.xml에서 명시 적으로 정의하지 않고 어떻게 든 구별 할 수있는 방법이 있습니까?

@Service("contractList") 
public class DefaultContractList implements ContractList { ... } 

@Service("correctContractList") 
public class CorrectContractList implements ContractList { ... } 

을 그리고 다음과 같이 사용할 :

답변

6

당신은 콩에 예선을 줄 수

public class MyClass { 

    @Autowired 
    @Qualifier("contractList") 
    private ContractList contractList; 

    @Autowired 
    @Qualifier("correctContractList") 
    private ContractList correctContractList; 
} 

를 XML의 설정에서 여전히이 될 것 @Autowired를 사용하여 :

<beans> 
    <bean id="contractList" class="org.example.DefaultContractList" /> 
    <bean id="correctContractList" class="org.example.CorrectContractList" /> 

    <!-- The dependencies are autowired here with the @Qualifier annotation --> 
    <bean id="myClass" class="org.example.MyClass" /> 
</beans> 
+0

감사합니다! XML 정의를 사용하는 것을 피하는 것 같지는 않습니다 ... XML에서 명시적인 정의없이 그렇게 할 수있는 방법이 있는지 궁금했습니다. –

+0

문제 없습니다. 문제가 해결되면 답을 표시하십시오. – RJo

관련 문제