Spring中如何解决自动装配的歧义性?
我们先来看看什么是Spring自动装配的歧义性:
当定义的多个bean都是继承同一个接口的时候,使用@Autowired注解对接口进行注入的时候,会出现歧义性。因为Spring这时候不知道找哪个实现bean注入了。
Talk is cheap,show me the code.来看下面这段代码:上面的代码就是典型的Spring自动装配的歧义性,如果在idea编辑器下编写,会发现他会提示报错:
看到这,我相信大家都已经明白了什么是Spring自动装配的歧义性。
解决自动装配的歧义问题那实际项目开发中真有这种情况该如何解决呢?
采用@Primary注解到其中一个类,这样等于是给实现了CarService接口的指定bean定义为首选类,这样Spring默认就会注入这个首选类,当然首选类不可以同时标记两个以上。
那么问题来了,如果我不想注入这个首选类,我想使用另外一个bean怎么办呢?
给这个bean起一个别名:
大家是不是知道了如何解决多实现类自动装配的问题?是不是很简单呢?这里大家是不是发现使用@Resource注解可以很好的解决上面的问题?经常写代码的人一定知道了解决的办法了:以上就是Spring自动装配的歧义性问题以及如何解决,希望我的解答对大家有帮助!那么这里再问大家一个问题:@Autowired和@Resource注解的区别是什么呢?期待你的留言~
我是【java架构设计】,关注我,持续为您提供Java领域优质内容!Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有