记录一个错误

通过@Resource注解,将IStateHandler接口的实现类 StateHandlerImpl注入进来

@Resource
private IStateHandler stateHandler;

@Resource注解默认按照名称进行装配,这里抛出异常是因为IStateHandlerStateHandlerImpl都被 Spring 容器管理,在进行 bean 注入时,SpringBoot 不知道注入哪一个 bean

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cn.itedus.lottery.test.domain.ActivityTest': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.NoUniqueBeanDefinitionException:No qualifying bean of type 'cn.itedus.lottery.domain.activity.service.stateflow.IStateHandler' available: expected single matching bean but found 2: stateHandlerImpl,IStateHandler

在这里插入图片描述

一下午过去越想越深入😭,最终发现在启动类上标识了@MapperScan注解,并且后面没有加具体的扫描范围,意味着 Spring 容器将会扫描所有包下的接口,并将它们作为映射器进行管理,@MapperScan 是MybatisPlus中的一个注解,用于扫描项目中的Dao层,将 dao 接口类注入到 Spring,能够让其他类进行引用。

@SpringBootApplication
@Configurable
@EnableDubbo
@MapperScan
public class LotteryApplication {public static void main(String[] args) {SpringApplication.run(LotteryApplication.class, args);}}

观察包路径,发现IStateHandlerStateHandlerImpl 确实在 cn.itedus.lottery 包下被扫描交给了 Spring 容器管理
cn.itedus.lottery.LotteryApplication
cn.itedus.lottery.domain.activity.service.stateflow.IStateHandler
cn.itedus.lottery.domain.activity.service.stateflow.impl.StateHandlerImpl

解决:去掉@MapperScan便可以正常注入进来了

补充

@ComponentScan和@MapperScan都是Spring框架中的注解,用于自动扫描并注册Bean。它们的区别如下:

  1. @ComponentScan:用于扫描指定包下的类,并将其注册为Spring容器的Bean。它可以扫描普通组件(如@Service、@Controller、@Component 等)以及自定义注解的组件。默认情况下,它只会扫描当前包及其子包下的类。
  2. @MapperScan:用于扫描指定包下的MyBatis接口,并将其注册为Spring容器的Bean。这样,我们就可以在不使用XML配置文件的情况下,直接使用接口的方式进行MyBatis操作。默认情况下,它只会扫描当前包及其子包下的类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/141859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

requestAnimationFrame是什么?介绍 如何使用?适用场景?有哪些缺点和优点,兼容性怎么样?

文章目录 前言是什么?如何使用适用场景优点和缺点兼容性后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端系列文章 🐱‍👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技…

【nlp】2.2 传统RNN模型

传统RNN模型 1 传统RNN模型1.1 RNN结构分析1.2 使用Pytorch构建RNN模型1.3 传统RNN优缺点1 传统RNN模型 1.1 RNN结构分析 结构解释图: 内部结构分析: 我们把目光集中在中间的方块部分, 它的输入有两部分, 分别是h(t-1)以及x(t), 代表上一时间步的隐层输出, 以及此时间步的…

gurobi最新下载安装教程 2023.11

文章目录 gurobi下载gurobi安装gurobi lincese获取添加系统环境变量 gurobi和python gurobi下载 https://www.gurobi.com/ 点击下载中心 download center 可以直接选择 Gurobi Optimizer下载 gurobi安装 gurobi可以通过python进行调用,但是需要先获得gurobi的li…

分布式服务器架构的优点有哪些?

在当今数字化时代,随着互联网的普及和技术的不断进步,企业和组织面临着处理越来越多的数据和用户请求的挑战。为了应对这些挑战,分布式服务器架构应运而生。分布式服务器架构通过将任务和数据分散到多个服务器上,提供了许多优点&a…

利用Python群组分析方法剖析客户行为

大家好,如今的企业有能力收集大量的数据,这些数据可以帮助企业制定更好的策略并了解其客户的行为。Cohort分析可以在其中发挥作用,Cohort分析是一种了解客户行为或用户互动的强大工具,并为企业提供有价值的见解,本文中…

fastdfs节点扩容

在巡检时发现,fastdfs 容量使用量比较大,原先规划的是1T,经过半年的运行已使用500G左右,并且按照每月100G左右 的量再增加。 fastdfs本身是分布式文件系统,扩容的方式有 添加storage磁盘 与 添加 group, 通…

Lua的resty-request库写的一个爬虫

为了使用Lua的resty-request库进行爬虫,需要先安装OpenResty和resty-request库,并将其引入到Lua脚本中。然后,可以使用resty-request库提供的函数来发送HTTP请求和处理HTTP响应。 以下是一个使用resty-request库进行爬虫的示例代码&#xff1…

SpringBoot 是否必传参数之嵌套校验(3)

文章目录 前言嵌套校验Controller层请求示例前言 本文基于SpringBoot 3.1.2,使用嵌套校验来优雅的处理参数是否必传校验。 嵌套校验 什么是嵌套使用呢?就是一个对象中包含另外一个对象,另外一个对象的字段也是需要进行校验。示例如下: User@Data public class User imple…

sqlyog安装和网址

网址Downloads webyog/sqlyog-community Wiki GitHub 1. 2. 3. 4. 5. 6. 7.

图论12-无向带权图及实现

文章目录 带权图1.1带权图的实现1.2 完整代码 带权图 1.1带权图的实现 在无向无权图的基础上,增加边的权。 使用TreeMap存储边的权重。 遍历输入文件,创建TreeMap adj存储每个节点。每个输入的adj节点链接新的TreeMap,存储相邻的边和权重 …

出入库管理系统vue2前端开发服务器地址配置

【精选】vue.config.js 的完整配置(超详细)_vue.config.js配置_web学生网页设计的博客-CSDN博客 本项目需要修改两处: 1、vue开发服务器地址:config\index.js use strict // Template version: 1.3.1 // see http://vuejs-templa…

传奇手游天花板赤月【盛世遮天】【可做底版】服务端+自主授权+详细教程

搭建资源下载地址:传奇手游天花板赤月【盛世遮天】【可做底版】服务端自主授权详细教程-海盗空间

概念解析 | LoRA:低秩矩阵分解在神经网络微调中的作用

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:基于低秩矩阵分解的神经网络微调方法LoRA LoRA: Low-Rank Adaptation of Large Language Models LoRA由如下论文提出,详细信息请参见论文原文 https://arxiv.org/abs/2106.0968…

使用MybatisPlus时出现的java.lang.NullPointerException异常~

错误描述如下所示: 错误原因:Junit的导包错误 单元测试的包有如下所示两个 我们应该根据springboot的版本进行选择, 在Spring Boot 2.2.X以后使用import org.junit.jupiter.api.Test Junit5 在Spring Boot 2.2.x之前使用import org.junit.T…

Qt 自定义event

本文章从属于 Qt实验室-CSDN博客系列 自定义事件携带数据 在某些情况下,可能需要通过事件携带一些额外的数据 可以通过自定义事件类来完成 一种实现方法是自定义一个QObject的子类,通过property来携带数据 class MyEvent : public QObject,public …

赛宁网安获评“铸网-2023”江西省实网应急演练优秀支撑单位

近日,南京赛宁信息技术有限公司(赛宁网安)获得了江西省工业和信息化厅颁发的“优秀支撑单位”荣誉。 该荣誉表彰是对赛宁网安在“铸网-2023”江西省工业领域网络安全实网应急演练中提供全程技术支撑能力的认可。 本次实网应急演练聚焦工业企…

理疗养生服务预约小程序要如何做

不少人面对身体症状疼痛,往往不会选择去医院,而是去理疗养生馆,选择艾灸、拔罐、中药贴敷等方式治疗改善或减轻疼痛。随着人们对中医信赖度增强,理疗养生市场增长迅速。 而在增长的同时,我们也注意到理疗养生馆经营痛…

Android画个圆点状态灯

1、创建一个 XML 文件在 res/drawable 目录下&#xff08;默认为黑色&#xff09; <?xml version"1.0" encoding"utf-8"?> <shape xmlns:android"http://schemas.android.com/apk/res/android"android:shape"oval"><…

Elasticsearch:检索增强生成 (Retrieval Augmented Generation -RAG)

作者&#xff1a;JOE MCELROY 什么是检索增强生成 (RAG) 以及该技术如何通过提供相关源知识作为上下文来帮助提高 LLMs 生成的响应的质量。 生成式人工智能最近取得了巨大的成功和令人兴奋的成果&#xff0c;其模型可以生成流畅的文本、逼真的图像&#xff0c;甚至视频。 就语…

搜维尔科技:ART最新的高级光学运动追踪相机

搜维尔科技&#xff1a;ART最新的高级光学运动追踪相机