按名称的Spring自动装配参数

时间:2016-08-31 13:08:25

标签: java spring

我有两个类型为InterfaceA的bean。 我试图将bean注入@Bean方法的参数,使用@Qualifier按名称自动装配。 令我惊讶的是Spring除非你的参数名与bean名匹配,否则无法解析正确的bean。

我在尝试:

@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。 但是,如果我使用与组件名称匹配的参数名称,它可以正常工作。

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

有人可以解释为什么我不能在@Resource@Qualifier使用名称进行自动装配吗?

1 个答案:

答案 0 :(得分:7)

@Qualifier注释添加到参数中,而不是方法:

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