No qualifying bean of type问题解决_no qualifying bean of type 'me.chanjar.weixin.mp.a-程序员宅基地

技术标签: 面试  阿里巴巴  android  前端  后端  学习路线  

No qualifying bean of type问题解决

前言

No qualifying bean of type ‘xxx.xxx.xxx’ available: expected single matching bean but found 2:xxx.xxx.xxx

对于一个java开发新手来说, 应该经常会遇到这个问题,而且还不好意思询问周围同事,不要怕,今天就让我们解决掉它。

问题及解决方案

问题1
包扫描不正确或未扫描
  • 默认情况下,如果使用了springboot,他会默认扫描启动类(使用了注解@SpringBootApplication)所在的包及子包,扫描的包中是否包含当前类所在的包。
  • 检查 scanBasePackages扫描路径是否包含当前类所在的包。
解决方案
  • 将当前类所在的包加入扫描路径即可,例如当前类所在包为 com.demo1

    @SpringBootApplication(@SpringBootApplication(scanBasePackages = {"com.demo","com.demo1"}))
    

    切记不要忘了扫描当前启动类所在的包 ,否则又会导致其他类不能注入。

问题2
当前类是否注入了spring环境
  • 当前类是否有 @Service @Component等注解
  • 当前类是否被@Bean初始化
解决方案
  • 增加对应注解将类注入到spring环境即可,例如:

    @Service
    public class ServiceImpl1 implements Service{}
    或
    @Component
    public class ServiceImpl1 implements Service{}
    或
    @Bean
    public ServiceImpl serviceImpl(){
    	return new ServiceImpl();
    }
    

    使用@Bean方法所在的类也必须是要注入到spring环境中的。

问题3
多个类实现了同一个接口
  • 查看当前接口是否被多个类实现

  • 多个实现类是否未设置BeanName或者设置了相同的BeanName,例如:

    @Service
    public class ServiceImpl1 implements Service{}
    @Service
    public class ServiceImpl2 implements Service{}
    或
    @Service("Service1")
    public class ServiceImpl3 implements Service{}
    @Service("Service1")
    public class ServiceImpl4 implements Service{}
    

    以上方式都会出现异常。

  • 注入Bean时是否指定了设置的BeanName,例如:

     @Autowired
     private Service service;
    
解决方案

当我们需要多个类实现同一个接口时,需要为每个实现类配置BeanName,例如:

@Service("serviceImpl3")
public class ServiceImpl3 implements Service{}
@Service("serviceImpl2")
public class ServiceImpl2 implements Service{}
@Service("serviceImpl1")
public class ServiceImpl1 implements Service{}

建议首字母小写。

以上没有问题,那么使用的时候还需要指定BeanName,例如:

@Qualifier(value = "serviceImpl1")
@Autowired
private Service service;

关于@Qualifier使用,详见:Spring @Qualifier 注释

如果不想在每个使用处设置@Qualifier,只想在特殊场景下设置,那么只需要在默认的实现类上增加注解@Primary,例如:

@Primary
@Service
public class ServiceImpl implements Service{}

那么在使用的时候就可以直接注入了,默认会使用ServiceImpl,例如:

@Autowired
private Service service;

注意事项

当存在多个相同类型的Bean,强烈建议使用@Primary把其中某一个Bean标识为“主要的”,使用@Autowired注入时会首先使用被标记为@Primary的Bean。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_67392661/article/details/126038188

智能推荐

vscode新手注意事项(字体间隔,报错提示波浪线,头文件路径,opencv头文件路径)_vscode 插件里间距错误提醒是哪个-程序员宅基地

文章浏览阅读787次。vscode新手注意事项(字体间隔,报错提示波浪线,头文件路径,opencv头文件路径)一.字体空格刚安装vscode,不设置字体的话,字体间的间隔会很难受,需要进行如下配置。在 设置->首选项 选择 文本编辑器->字体 ,将“FONT Family ”选项修改成如下。Consolas,Consolas,monospace,Consolas二.报错提示波浪线vscode对代码进行错误提示,进行如下配置。(1)在设置->首选项 搜索errorsquiggles._vscode 插件里间距错误提醒是哪个

云服务器上划虚拟主机,云服务器上划虚拟主机-程序员宅基地

文章浏览阅读171次。云服务器上划虚拟主机 内容精选换一换您可以为需要容灾的云服务器在指定的保护组下创建保护实例。在当前的生产站点遇到不可抗力导致大规模服务器故障时,您可以调用保护组的操作接口进行故障切换,从而确保保护实例上运行的业务正常连续。为每一个需要复制的服务器挑选一个保护组,并创建一个保护实例。创建保护实例过程中,会在保护组的容灾站点创建对应的服务器和磁盘,服务器规格可根据需要进行选择,运行在专属主机和普通EC...

微型计算机故障分为哪几类,西南大学19秋[0240] 计算机维修技术在线作业-程序员宅基地

文章浏览阅读2.3k次。0240 计算机维修技术- M7 T, _$ E0 ef4 E1.[单选题]评定主板的性能首先要看()。. a4 k, f/ F% N0 C/ o4 d奥鹏作业答案可以联系QQ 7612960214 d' d: qk, l( H$ kA.C.CPU6 |, q" c! V# q1 R- i& eB.内存- z) K* M3 P: H2 {/ R0 bC.主板结构' n1 E2 ..._微型计算机常见有哪些故关型?并举例说明灰尘对微机设备会产生哪些故障关型与危害

vt-x vt-d vt-c_宏碁笔记本的vtx和vtd-程序员宅基地

文章浏览阅读4.5k次。Intel VT技术,主要由三部分技术组成:VTx、VTd和VTc。其中,VTx是处理器技术,提供内存以及虚拟机的硬件隔离,所涉及的技术有页表管理以及地址空间的保护。VTd是处理有关芯片组的技术,它提供一些针对虚拟机的特殊应用,如支持某些特定的虚拟机应用跨过处理器I/O管理程序,直接调用I/O资源,从而提高效率,通过直接连接I/O带来近乎完美的I/O性能。VTc是针对网络提供的管理,它可以在一个物_宏碁笔记本的vtx和vtd

git 常用命令_git 强制更新-程序员宅基地

文章浏览阅读6.8k次。目前由于项目需要,了解了一些基本的git命令1、首先是GIt强制pull ; git强制更新 git fetch --all git reset --hard origin/master git pull2、ubuntu系统有多个git账号,如何同时正常使用两个账号由于自己的git账号和目前公司的账号不一致,因此有此需求首先是切换到~/.ssh/目录下,执行下面命令:在此目录下新建config :touch config执行命令:v..._git 强制更新

python封装接口用于调用_python接口自动化(三十五)-封装与调用--流程类接口关联(详解)...-程序员宅基地

文章浏览阅读84次。简介流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。接口封装大致流程1、在接口测试中,有些接口经常会被用到比如登录的接口,这时候我们可以每个接口都封装成一个方法,如:登录、保存草稿、发布随笔、删除随笔,这四个接口就可以写成四个方法2、接口封装好了后,后面我们写用..._pycharm接口自动化需封装接口内容

随便推点

Ubuntu18.10下安装Qt5.12过程记录-程序员宅基地

文章浏览阅读310次。首先你得先安装Ubuntu操作系统(我是在VMWare14中安装的Ubuntu18.10版本)。阿里镜像:https://opsx.alibaba.com/mirror我这里下载的文件为:ubuntu-18.10-desktop-amd64.isoVMWare安装Ubuntu18.10过程省略…打开Ubuntu虚拟机,打开火狐浏览器,输入网址下载QT5.12(linux版本,约..._qt5 镜像 ubuntu18

android开发面试题_csdn android 移动软件开发 面试题-程序员宅基地

文章浏览阅读2.1k次。打包下载: Android面试题带答案.doc(108.5 KB, 下载次数: 2126) 2012-1-11 11:20 上传点击文件名下载附件 下载积分: 下载豆 -1 Android面试题1. 下列哪些语句关于内存回收的说明是正确的? (b ) A、 程序员必须创建一个线程来释放内存 B、 内存回收程序负责释放无用内_csdn android 移动软件开发 面试题

前端和后端的区别?-程序员宅基地

文章浏览阅读10w+次,点赞105次,收藏254次。有的人认为,前端很好学,后端不好学。也有的人认为,前端不好学,后端好学,归根到底还得看个人兴趣。前端和后端做简单的叙述后端:入门难,深入更难,枯燥乏味,没有太大成就感,看一堆业务逻辑代码。前端:入门简单,先易后难,能看到自己做出来的展示界面,有成就感。前端和后端两者工作的内容和负责的东西是完全的不同01展示的方式不同前端指的是用户..._后端

Python学习记录_python专业学习记录-程序员宅基地

文章浏览阅读115次。Python学习记录_python专业学习记录

pix2pix 与 pix2pixHD的大致分析_patchgan pix2pix改进-程序员宅基地

文章浏览阅读1.9w次,点赞6次,收藏45次。图像翻译,指从一副图像到另一副图像的转换。可以类比机器翻译,一种语言转换为另一种语言。下图就是一些典型的图像翻译任务:比如语义分割图转换为真实街景图,灰色图转换为彩色图,白天转换为黑夜......本文主要介绍图像翻译的三个比较经典的模型pix2pix,pix2pixHD, vid2vid。pix2pix提出了一个统一的框架解决了各类图像翻译问题, pix2pixHD则在pix2pix的基础上,较好的解决了高分辨率图像转换(翻译)的问题, vid2vid则在pix2pixHD的基础上,较好的_patchgan pix2pix改进

SpringBoot与Spring的对比_springboot比spring做了什么改进-程序员宅基地

文章浏览阅读9k次,点赞2次,收藏7次。一、原有Spring优缺点分析1.Spring的优点分析Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的EnterpriseJavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。2.Spring的缺点分析虽然Spring的组件代码是轻量级的,但它的配置却是重量_springboot比spring做了什么改进

推荐文章

热门文章

相关标签