首页 > 代码库 > 自动装配[@Autowired]的歧义性
自动装配[@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@Primarypublic class MyBeanImpl implements MyBean{}--------------------------------------------------------<bean id="myBean" class="com.wzy.MyBeanImpl" primary="true" />--------------------------------------------------------@Bean@Primarypublic MyBean getMyBean(){ return new MyBeanImpl();}
自动装配[@Autowired]的歧义性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。