1、@Bean 与@Qualifier 区别
@Qualifier用于根据bean名称指定注入bean时匹配的Bean
@Bean用于在配置类中声明一个bean @Bean("bean"),可以指定bean名称
转载示例如下:
(1)创建一个名叫 ApplicationConfig 的类:
—> 1、用 @Configuration 注解上
—> 2、继承 WebMvcConfigurerAdapter (零 XML 注入)
—> 3、定义一个方法用 @Bean 注解在此方法上
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Bean;
@Configuration
public class ApplicationConfig extends WebMvcConfigurerAdapter {
@Bean("testInterface")
public TestInterface testInterface() {
return new TestInterfaceImpl();
然后,在 Controller 或 ServiceImpl 层 就可直接用 @Autowired & @Qualifier 注入了:
—> @Bean("…") 必须与 @Qualifier("…") 括号里面的值必须一样
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@RestController
@RequestMapping("/test")
public class CsMcmsErrorMessageController {
@Autowired
@Qualifier("testInterface")
private TestInterface testInterface;
}
2、@PrimaryKey 和@Qualifier区别
@Primary:在众多相同的bean中,优先选择用@Primary注解的bean(该注解加在各个bean上),但是不具有灵活性
@Qualifier:在众多相同的bean中,@Qualifier指定需要注入的bean(该注解跟随在@Autowired后),灵活性强。
参考资料: