2010-01-04 5 views
6

스프링에서 알 수 있듯이 에는 빈에 대한 자동 할당이 가능한 경우 첫 번째 후보가 있음을 나타내는 "primary"속성이 있습니다 재산.주석을 사용하여 bean이 기본 bean임을 표시 할 수 없음

하지만 이제는 모든 Bean 정의가 @ Component/@ Service 등을 사용하여 선언됩니다. Bean을 선언하는 데 사용할 수있는 해당 "기본"속성을 찾을 수 없습니다.

어떻게하면 좋을지 알려주세요. 감사합니다.

답변

22

스프링 3.0에서는 @Primary을 사용합니다.

여러 후보 가 단일 값 종속 관계를 autowire하기 자격이 때 콩이 우선 순위를 부여해야 함을 나타냅니다. 정확히 개의 '기본'bean이 후보 중 하나 인 경우 자동으로 값이됩니다.

Bean으로 주석 된 메소드에 대해 직접적으로 모든 클래스에서 사용하거나 에 간접적으로 Component 또는 으로 주석을 지정할 수 있습니다.

구성 요소 검색이 인 경우를 제외하고 클래스 수준에서 1 차 사용은 이 적용되지 않습니다. 1 차 주석이 달린 클래스가 XML을 통해 선언 된 경우 기본 주석 메타 데이터는 무시되며 대신 <bean primary="true|false"/>은 입니다.

ref docs을 참조하십시오.

+0

감사합니다. 스프링 3.0으로 업그레이드 했으므로 이제 정상적으로 작동합니다. 너의 심판이 사망 한 것 같아 . – Matt

+0

. 이 방법이 더 좋을 수도 있습니다. http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html –

+0

@jb. 고마워, 고정 – skaffman

4

@Primary 주석은 Spring 3.0을 사용하는 경우에만 작동합니다.

스프링 2.5에는 기본 속성에 대해 동등한 주석이 없습니다. @Qualifier 어노테이션을 사용하여 주입 할 빈을 지정해야합니다. 또 다른 옵션은 동일한 목적으로 자신의 한정자 주석을 정의하는 것입니다.

자세한 내용은 docs을 참조하십시오.

관련 문제