2016-08-31 3 views
2

InterfaceA 유형의 두 가지 콩이 있습니다. @Qualifier을 사용하여 이름으로 autowire를 사용하여 @Bean 메소드의 인수에 bean을 삽입하려고했습니다. 당신의 매개 변수 이름이 빈 이름과 일치하지 않으면 Spring이 적절한 빈을 해결할 수 없다는 것이 놀랍습니다.이름으로 봄 autowiring 매개 변수

@Component 
public class ClassA implements InterfaceA { 
} 

@Component 
public class ClassB implements InterfaceA { 
} 

@Configuration 
public class AppConfig { 
    @Bean 
    @Autowired 
    @Qualifier("classA") 
    public SomeOtherClass someOtherClass(InterfaceA object) {...} 
} 

을하지만 NoUniqueBeanDefinitionException을 가지고 :

나는 노력했다. 그러나 구성 요소 이름과 일치하는 매개 변수 이름을 사용하면 올바르게 작동합니다. 내가 여기 @Resource 또는 @Qualifier로 이름에서 autowiring을 사용할 수없는 이유

@Configuration 
public class AppConfig { 
    @Bean 
    @Autowired 
    public SomeOtherClass someOtherClass(InterfaceA classA) {...} 
} 

누군가 설명해 주시겠습니까?

+0

전체 스택 트레이스를 추가하십시오 – Jens

답변

6

은하지 않는 메서드에 매개 변수로 @Qualifier 주석을 추가

public SomeOtherClass someOtherClass(@Qualifier("classA") InterfaceA object) {...}