zoukankan      html  css  js  c++  java
  • 自动装配[@Autowired]的歧义性

    在使用@Autowired自动装配时,如果一个接口有多个实现类,那么自动装配就会出现错误,因为Spring无法判断到底要装配哪个实现类实例(bean)。

    1.可以使用@Qualifier("beanName")明确指定要注入的是哪个bean

    @Autowired
    @Qualifier("beanName")
    private MyBean myBean;
    ---------------------------------
    @Autowired
    @Qualifier("beanName")
    public void setBean(MyBean bean){
    
        this.myBean = bean;    
    }

    2.标识首选的bean,某个接口有多个实现类,可以在某个实现类上标注@Primary,当出现歧义时,Spring会使用首选的bean,其他的会忽略,但是如果这个接口有两个实现类都标注了@Primary的话,那么又出现歧义了,所以@Primary只能标注在一个接口的一个实现类上

    @Component
    @Primary
    public class MyBeanImpl implements MyBean{
    
    }
    
    --------------------------------------------------------
    <bean id="myBean" class="com.wzy.MyBeanImpl" primary="true" />
    
    --------------------------------------------------------
    @Bean
    @Primary
    public MyBean getMyBean(){
    
        return new MyBeanImpl();
    }
  • 相关阅读:
    第五章 相关分析 第三组作业
    作业二 网调问卷制作
    作业一 统计软件简介与数据操作
    Map Reduce Shuffle
    springboot druid 多数据源配置
    Storm Stream grouping
    大专+高级证书 人才引进广州。
    First Article
    批量选择图片
    模态框
  • 原文地址:https://www.cnblogs.com/wwzyy/p/5936689.html
Copyright © 2011-2022 走看看