2014-01-29 1 views
3

다른 클래스에 의해 확장 된 기본 클래스가 있습니다. 따라서 특정 인스턴스를 삽입 할 수있는 한정자를 제공해야합니다.Spring에서 주입을위한 기본 구현을 정의 하시겠습니까?

어떤 클래스 (예 : 가장 상위 클래스)를 기본 클래스로 표시 할 수 있습니까? 예 : @Autowired에 한정자가 제공되지 않으면 선택됩니까?

@Service 
//@Qualifier("Parent") 
class ParentRunner; 

@Service 
@Qualifier("Child") 
class ChildRunner extends ParentRunner; 

다음은 이상 작동하지 않습니다 당신은 다음 기본값으로 사용됩니다 @Primary 하나의 구현을 표시 할 수 있습니다

@Autowired 
//@Qualifier("Parent") 
private ParentRunner runner; 
+2

하나의 구현을 '@ Primary'로 표시하여 기본값으로 사용할 수 있습니다. http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html –

+0

위대한 작품을 참조하십시오! 이 질문을 답으로 쓰거나 주석으로 추가하지 않으시겠습니까? – membersound

답변

3

. xml을 사용할 때 bean 요소 안에 primary 요소를 사용하여 사용할 기본 1 차 인스턴스에 인스턴스를 설정할 수 있습니다.

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Primary.html

+0

javax Primary의 문제는이 값이 재정의 될 수있는 기본값이 아니기 때문입니다. (xml 구성을 제외하고) 그렇기 때문에 내 관점에서 볼 때 기본값이 아니라 유일한 구현 클래스 인이 클래스는 클래스 패스에있다. 기본 구현보다 높은 우선 순위를 선언 할 수 있도록 기본보다 우선 순위를 사용하여 요청하는 jira 항목이 있습니다. https://jira.springsource.org/browse/SPR-10548 –

+0

'@ Primary'는 여러 개가있는 경우에만 실행됩니다 해결할 후보자. 특정한'@ 한정자 '를 지정하면 단 하나의 후보와 일치해야하며 그 다음 하나는 사용해야합니다. –

관련 문제