org.springframework.beans.factory.NoUniqueBeanDefinitionException非唯一Bean定义报错的解决方法,亲测有效,嘿嘿嘿

【从小工到专家】SpringBoot异常之一:org.springframework.beans.factory.NoUniqueBeanDefinitionException 这里写自定义目录标题SpringBoot异常简述初步分析具体原因 SpringBoot异常简述 在处理一个由SpringMVC的项目迁移到SpringBoot的项目过程中,接口调用的时候发生了以下异常: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type 'org... 阅读详情

问题分析

org.springframework.beans.factory.NoUniqueBeanDefinitionException 异常表示 Spring 容器中存在多个相同类型的 Bean 定义,但是请求者(如 @Autowired 注入)期望的是唯一的 Bean 实例。当 Spring 容器试图注入一个依赖项时,如果发现有多个相同类型的 Bean 可供选择,并且没有明确的指定哪一个 Bean 应该被注入,就会抛出这个异常。

报错原因

  1. 多个相同类型的 Bean 定义:在 Spring 配置中(可能是 XML 配置、Java 配置或者注解配置),不小心定义了多个相同类型的 Bean,且这些 Bean 没有被指定唯一的标识符(如 @Bean 方法的名称或 @Qualifier 注解)。
  2. 自动装配不明确:在尝试自动装配一个依赖项时,没有指定要注入的 Bean 名称,而 Spring 容器中又存在多个相同类型的 Bean。

解决思路

  1. 识别问题 Bean:首先确定哪些 Bean 导致了冲突。
  2. 指定唯一的 Bean:确保在自动装配时能够明确指定要注入的 Bean。
  3. 优化配置:如果可能,避免在容器中定义多个相同类型的 Bean,或者确保每个 Bean 都有唯一的标识符。

解决方法

方法一:使用 @Qualifier 注解指定 Bean

在自动装配的字段、方法参数或构造函数参数上使用 @Qualifier 注解来指定要注入的 Bean 名称。

@Autowired
@Qualifier("preferredBeanName")
private MyBean myBean;
方法二:使用 @Primary 注解指定首选 Bean

在 Bean 的定义上使用 @Primary 注解来标记其中一个 Bean 为首选 Bean。当存在多个相同类型的 Bean 时,Spring 将使用带有 @Primary 注解的 Bean 进行自动装配(如果有其他更具体的指定,如 @Qualifier,则优先使用这些指定)。

@Bean
@Primary
public MyBean preferredBean() {
    return new MyBean("preferred");
}

@Bean
public MyBean anotherBean() {
    return new MyBean("another");
}
方法三:使用 @Bean 注解的名称作为 Bean 名称

下滑查看解决方法

在 Java 配置类中,使用 @Bean 注解定义 Bean 时,方法的名称默认就是 Bean 的名称。确保这些名称在容器中唯一。

@Configuration
public class MyConfig {

    @Bean
    public MyBean preferredBean() {
        return new MyBean("preferred");
    }

    @Bean("anotherBeanName") // 明确指定 Bean 名称
    public MyBean anotherBean() {
        return new MyBean("another");
    }
}
方法四:在 XML 配置中指定唯一的 ID

如果你在使用 XML 配置,确保每个 Bean 定义都有一个唯一的 id 属性。

<bean id="preferredBean" class="com.example.MyBean">
    <!-- 其他配置 -->
</bean>

<bean id="anotherBean" class="com.example.MyBean">
    <!-- 其他配置 -->
</bean>

注意事项

在解决 NoUniqueBeanDefinitionException 异常时,请确保你了解你的应用程序的需求和上下文。有时,存在多个相同类型的 Bean 是有意的,因为它们可能服务于不同的目的。在这种情况下,你应该明确地使用 @Qualifier 或其他机制来指定要注入的 Bean。

解决异常 more than one ‘primary‘ bean found among candidates: [jacksonObjectMapper, objectMapper] @Primary是Spring框架中的一个注解,用于标识在多个候选Bean中,被注解的Bean应该被优先选择作为自动装配的首选项。 当存在多个相同类型的候选Bean时,如果没有使用@Primary注解进行标记,Spring无法确定要选择哪个Bean进行自动装配,会抛出异常。而使用了@Primary注解的Bean,就会被默认认为是主要(Primary)Bean,具有更高的优先级。 阅读详情

相关推荐

【错误处理】Spring 报 NoUniqueBeanDefinitionException 异常如何处理

本文针对Spring IOC容器中存在多个同类型Bean时导致的NoUniqueBeanDefinitionException异常,提出了三种解决方案: @Qualifier指定Bean名称:通过@Qualifier注解明确指定要注入的Bean名称,可与@Autowired或构造方法注入配合使用。 @Primary声明主Bean:在其中一个实现类上添加@Primary注解,使其成为默认注入选项。 @Bean的autowireCandidate属性:通过配置类手动注册Bean,设置autowireCandid

死牛胖子的技术随笔 872

Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of

​ 异常时,我们应该仔细检查 Spring 容器中的 Bean 定义,确保只有一个满足条件的 Bean,并且在需要注入的地方使用适当的注解明确指定要使用的 Bean。​ 异常,这个异常意味着 Spring 容器中存在多个相同类型的 Bean,但是在需要注入的地方却无法确定要使用哪个 Bean。主要的 Bean 表示在有多个符合条件的 Bean 的情况下,优先使用该 Bean。然后,在需要使用 SqlSessionFactory 的地方注入对应商家的 SqlSessionFactory,并使用 ​。

牛肉胡辣汤 2133

工业机器人关节拆装流程_一文读懂模块化直驱电机及机器人关节模组

私信“干货”二字,即可领取138G伺服与机器人专属及电控资料!如果说芯片是智能行业最为重要的核心元件,那么电机几乎可以说是支撑了整个自动化和大工业生产以及现代社会最为重要的部件,全世界90%的能源是由电机发出来的,而70%是由电机消耗调的,电机可以说是整个人类社会能源循环的占有绝对地位的产品。普通伺服电机伺服电机其实已经算是电动机中比较高端的类型,特别是永磁同步类型的伺服电机,由于其启动快速,惯量...

weixin_32159771的博客 2155

关于Spring遇到的各种问题

spring

yukki.的博客 2258

浅析图像处理中的名词:Gamma 校正(Gamma变换、Gamma调整)

浅析图像处理中的名词:Gamma 校正(Gamma变换、Gamma调整)

qq_51908382的博客 1万+

转录组数据提取技巧汇总

数据整理是数据分析的前提,而数据的正确提取则是数据整理的前提。

zfyyzhys的博客 1784

已解决org.springframework.beans.factory.NoUniqueBeanDefinitionException非唯一Bean定义异常的正确解决方法,亲测有效!!!

已解决org.springframework.beans.factory.NoUniqueBeanDefinitionException非唯一Bean定义异常的正确解决方法,亲测有效!!!

小明的Java问道之路 2277

中小团队必看!用Harbor+Jenkins打造轻量级K3S交付流水线(含成本优化方案)

本文为中小团队详细介绍了如何利用K3S、Harbor与Jenkins构建一套高性价比的自动化交付流水线。内容涵盖单节点K3S集群的效能配置、Harbor镜像仓库的磁盘空间优化、Jenkins共享库实现流水线复用,并提供了完整的实战案例与成本优化方案,帮助团队以较低成本快速落地高效的自动化部署。

weixin_29223603的博客 504

org.springframework.beans.factory.NoUniqueBeanDefinitionException非唯一Bean定义异常

在Java开发的世界里,我们常常会遇到各种各样的报错信息,这些报错就像是路上的绊脚石,阻碍着我们项目的顺利推进。而其中,org.springframework.beans.factory.NoUniqueBeanDefinitionException这个非唯一Bean定义异常更是让不少开发者和环境配置者头疼不已。当遇到这个异常时,程序往往无法按照预期正常运行,导致我们花费大量的时间去排查和解决。那么,今天就让我们深入探讨一下这个异常到底是怎么产生的,以及该如何有效地解决它吧。

鸽芷咕的博客 1189

NFC门禁卡复制全解析:从M1卡到UID卡的攻防实践

本文深入解析了NFC门禁卡的安全机制与攻防实践。从M1卡基于Crypto1算法的原理漏洞讲起,详细阐述了利用Proxmark3等工具进行侦听、破解密钥及使用UID卡进行复制的完整攻击链条。同时,为防御方提供了从升级CPU卡、启用全扇区认证到部署多因子验证的系统性防护策略,旨在帮助管理员构建更稳固的物理安全防线。

weixin_29182481的博客 1401

基于ResNet + LLM大语言模型的分类识别系统设计与实现,Web前后端分离,Django+vue3+AI助手模块+ResNet50算法+LLM 联动+Element Plus等技术,全网独发

分类识别任务是计算机视觉中的重要任务,广泛应用于智慧校园分类、智慧农业、智慧生活场景分类等领域。常见的分类模型有 VGGNet、ResNet 、MobileNet 、ConvNeXt、DenseNet、ViT、Swin Transformer、YOLOv8/11/26。本项目结合 ResNet分类识别算法 + LLM大语言模型联动 ,使用 Django + Vue3,构建了一个通用的 Web 前后端系统,用户端 + 管理端 ,便于用户操作检,不仅可以用于大论文的工作量展示,还可以作为毕业设计。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 759

【Java】已解决:org.springframework.beans.factory.NoUniqueBeanDefinitionException非唯一Bean定义异常

场景:在一个Spring Boot项目中,开发者定义了多个同类型的Bean,并在某个地方注入该类型的Bean。由于Spring无法确定具体要注入哪个Bean,导致抛出了。已解决:org.springframework.beans.factory.NoUniqueBeanDefinitionException非唯一Bean定义异常。此异常通常发生在Spring容器中存在多个相同类型的Bean,而Spring无法确定要注入哪个Bean时。非唯一Bean定义异常,确保Spring容器正确管理和注入Bean。

屿小夏.的知识博客 1846

【深度学习驱动流体力学】Python流体力学Ansys Fluent

PyFluent 是一个将 Python 编程语言与 Ansys Fluent 流体动力学 (CFD) 仿真软件集成的工具。它允许用户通过 Python 脚本来控制和自动化 Fluent 中的仿真任务,实现从预处理、求解到后处理的全流程控制。PyFluent 结合了 Python 的灵活性和 Fluent 的强大功能,提供了一种高效且灵活的 CFD 仿真方法。PyFluent 是一个强大而灵活的工具,使用户能够通过 Python 脚本全面利用 Ansys Fluent 的功能。

源代码杀手的博客 3123

Spring Boot异常org.springframework.beans.factory.NoUniqueBeanDefinitionException

目录 原因:举例:解决方案1解决方案2解决方案3解决方案4解决方案5 最近遇到的启动报错如下: Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.apexsoft.livebos.dao.FileStorageDao’ availabl

西凉的悲伤博客 1万+

基于深度学习YOLOv8的PCB板缺陷检测系统

基于YOLOv8的PCB板缺陷检测系统,可以有效提高PCB生产过程中的检测效率。未来,我们可以进一步优化模型,结合更多的数据增强策略和先进的网络结构,以适应更复杂的生产环境。为了进行训练,理想的数据集应包含多种不同缺陷类型和不同背景的PCB图像。YOLOv8需要的数据格式为每个图像一个标签文件,每个标签文件包含缺陷的类别及其边界框坐标。运行该界面时,用户可以通过点击按钮选择图像,随后系统将自动检测图像中的PCB缺陷并显示结果。训练完成后,可以使用训练好的模型进行推理,检测新的PCB图像中的缺陷。

YOLO 1070

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

org.springframework.beans.factory.NoUniqueBeanDefinitionException

看书和实践中,自己体会了一下这个异常org.springframework.beans.factory.NoUniqueBeanDefinitionException 该异常如何产生 该异常如何解决 先来看一下下面的代码: Animal.java接口: package com.example.demo.chapter3; public interface Animal { void ...

墨笙弘一 6659

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

报错——Exception in thread “main“ org.springframework.beans.factory.NoUniqueBeanDefinitionException:

具体报错 Exception in thread “main” org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type ‘com.test02.test.Person’ available: expected single matching bean but found 2: Person,Person2 截图: 应用情景 在练习使用Spring框架时,练习使用配置文件管理j

weixin_42924812的博客 1608

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

拦截器里获取redisTemplate报错org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifyin

背景 在使用jwt做权限校验的时候,需要在拦截器里校验前端传来的token信息与redis中的信息是否一致; 刚开始使用StringRedisTemplate获取信息,但是用户服务存储信息的时候是使用RedisTemplate存取信息,导致在我写的微服务内,如果使用StringRedisTemplate获取信息,获取到的token信息会额外多带两个引号,如下所示: String token = stringRedisTemplate.opsForValue.get(key); //输出 ""jwt-toke

leoalasiga的博客 1524

解决Spring异常报错信息:NoUniqueBeanDefinitionException

Spring报错:expected single matching bean but found 2: 记录一个报错信息: org.springframework.beans.factory.NoUniqueBeanDefinitionException:No qualifying bean of type [com.demo.services.BaseService] is defined:expected single matching bean but found 2: empController,d

馒頭、的博客 2446

Spring报错:org.springframework.beans.factory.NoUniqueBeanDefinitionException

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [com.panpan.beans.Book] is defined: expected single matching bean but found 2: book01,book02  at org.sp

凉凉思语的博客 3571

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type错误的解决办法

很多学者在使用Spring工厂的时候会报出这个错误,这个其实很简单,不是唯一Bean的错误,就是你的Bean创建的不是唯一的,系统无法确定是哪一个Bean,犯这种错的大多数都是通过类来获取Bean的 UserDao userDao = beanFactory.getBean(UserDao.class); 如果你在xml配置文件下这样写就会报错 <bean id="userDao" class="edu.xalead.UserDao"></bean> <bean id=".

qq_43413774的博客 1197
上一篇: com.alibaba.dubbo.rpc.RpcException RPC调用过程中报错解决方法,亲测有效,嘿嘿嘿
下一篇: CircuitBreakerOpenException断路器打开报错的解决方法,亲测有效,嘿嘿嘿
代码无疆
博客等级 码龄3年 4万+粉丝 305原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值