2016-08-31 5 views
2

Ich habe zwei Bohnen mit dem Typ InterfaceA. Ich habe versucht, die Bohne in ein Argument einer @Bean Methode unter Verwendung @Qualifier zum Autowire namentlich zu injizieren. Ich war überrascht, dass Spring die richtige Bean nicht auflösen kann, es sei denn, Ihr Parametername stimmt mit dem Bean-Namen überein.Spring Autowiring Parameter nach Name

Ich habe versucht:

@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) {...} 
} 

aber bekam die NoUniqueBeanDefinitionException. Wenn ich jedoch Parametername den Komponentennamen entspricht, funktioniert es gut.

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

Könnte jemand erklären, warum ich nicht autowiring namentlich mit @Resource oder @Qualifier hier nicht verwenden kann?

+0

Bitte fügen Sie den vollständigen Stacktrace – Jens

Antwort

6

Fügen Sie die @Qualifier Anmerkung zum Parameter nicht auf das Verfahren:

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