2010-05-20 3 views
4

스프링 2.5에서 구성 요소 검색을 사용하지만 xml에서 컨트롤러를 정의하는 경우에도 마찬가지입니다.구성 요소 검색으로 시작된 스프링 빈을 무시할 수 있습니까?

응용 프로그램 컨텍스트에서이 빈의 인스턴스 두 개를 얻습니까? 그렇다면 어떤 인스턴스가 관련 RequestMappings을 위해 호출 될 것인가?

<bean id="myController" class="domain.MyController"> 
     <property name="filters"> 
      <list> 
       <ref local="filter1"/> 
       <ref local="filter2"/> 
      </list> 
     </property>   
    </bean> 

답변

0

좋은 질문입니다. 확실하지 않습니다. 내 추측은 먼저 선언 된 것이 승리하는 것입니다. 따라서 <context:component-scan>이 먼저 오면 자동 감지 된 구성 요소가 요청을 받게됩니다. <bean>이 먼저 오면 그게 승리합니다.

의심 스럽다면 테스트 해보세요. 알아 내서는 안됩니다.

<context:component-scan>의 중첩 필터 요소를 사용하여 스캐너에서 구성 요소를 명시 적으로 제외하는 것이 더 좋은 해결책입니다.

+0

나는 그것을 테스트했으며 배수가 발견되면 항상 예외를 throw합니다. –

0

이전에 우연히 그 일을했는데 일반적으로 여러 응용 프로그램 컨텍스트가 발생합니다. 그것이 정상적으로 작동하는 것처럼 보이는 모든 것이 제대로 수행되지는 않았지만, 데이터베이스 변경과 같은 작은 일은 결코 커밋되지 않았습니다.

+0

아니요, 다중 컨텍스트를 만들지 않고 여러 개의 빈을 만듭니다. – skaffman

1

Spring에 주어진 인터페이스의 빈을 요청하고 그 인터페이스의 빈이 두 개있는 경우 Spring 컨테이너에서 예외가 발생합니다.

이 규칙의 예외는 구성 요소가 @Primary으로 표시되었거나 XML bean의 기본 속성이 true로 설정된 경우입니다.

관련 문제