按名称的Spring自动装配参数

and*_*erz 2 java spring

我有两种类型的豆子InterfaceA.我试图将bean注入到@Bean使用@Qualifier按名称自动装配的方法的参数中.令我惊讶的是,除非你的参数名称与bean名称匹配,否则Spring无法解析正确的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) {...}
}
Run Code Online (Sandbox Code Playgroud)

但得到了NoUniqueBeanDefinitionException.但是,如果我使用参数名称匹配组件名称,它可以正常工作.

@Configuration
public class AppConfig {
    @Bean
    @Autowired
    public SomeOtherClass someOtherClass(InterfaceA classA) {...}
}
Run Code Online (Sandbox Code Playgroud)

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

Jen*_*ens 7

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

public SomeOtherClass someOtherClass(@Qualifier("classA") InterfaceA object) {...}
Run Code Online (Sandbox Code Playgroud)