记录一个错误

通过@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.hqwc.cn/news/172016.html

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

相关文章

嵌入式工作岗位未来会不会越来越少?

今日话题,嵌入式工作岗位未来会不会越来越少?未来的嵌入式岗位机会将会逐渐增多,因为嵌入式技术是万物互联的基础,从智能手表到智能汽车,嵌入式都扮演着关键角色。虽然相比计算机科学CS,嵌入式领域的天花板…

List中的迭代器实现【C++】

List中的迭代器实现【C】 一. list的结构二. 迭代器的区别三. 迭代器的实现i. 类的设计ii. 重载iii. !重载iiii. begin()iiiii. end()iiiii. operator* 四.测试五. const迭代器的实现i. 实现ii 优化实现 六. 整体代码 一. list的结构 其实按照习惯来说,应该要专门出…

初识RabbitMQ - 安装 - 搭建基础环境

RabbitMQ 各个名词介绍 Broker:接收和分发消息的应用,RabbitMQ Server 就是 Message Broker Virtual host:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当…

OpenAI调查ChatGPT故障;向量搜索的优势与局限

🦉 AI新闻 🚀 OpenAI调查ChatGPT故障,发布新AI产品GPTs和GPT-4 Turbo 摘要:OpenAI的ChatGPT和其他服务出现故障,经过调查后发现是由于DDoS攻击导致的异常流量模式。OpenAI在首届开发者大会上发布了新的AI产品GPTs&am…

【Java】集合(一)单列集合List

1.集合 可以动态保存任意多个对象,并提供了一系列的操作对象的方法:add、remove、set、get等。 2.集合框架体系 分为两大类: 单列集合和双列集合 3.List接口基本介绍 List接口是Collection接口的子接口 List集合类中元素有序&#xff0…

大数据治理——为业务提供持续的、可度量的价值(一)

目录 大数据治理——为业务提供持续的、可度量的价值... 1 概述... 2 大数据治理系列... 2 第一部分:大数据治理统一流程模型概述和明确元数据管理策略... 2 第二部分:元数据集成体系结构... 15 第三部分:实施元数据管理... 25 第四部…

Springboot+Dubbo+Nacos 集成 Sentinel(入门)

Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 官网 1.版本选择 参考 SpringClou…

3D模型人物换装系统二(优化材质球合批降低DrawCall)

3D模型人物换装系统 介绍原理合批材质对比没有合批材质核心代码完整代码修改总结 介绍 本文使用2018.4.4和2020.3.26进行的测试 本文没有考虑法线贴图合并的问题,因为生成法线贴图有点问题,放在下一篇文章解决在进行优化 如果这里不太明白换装的流程可以…

腾讯云服务器如何登陆宝塔

腾讯云服务器如何登陆宝塔面板 1.登录腾讯云控制台,找到对应的服务器,设置实例密码 “重置密码” 设置自己的实例密码 2.查看更多,登录账号 3.查看宝塔面板原始账号密码 !!注意:记得防火墙提前开放 88…

httpRequest库代码示例

python # 首先导入所需的库 library(httpRequest) # 设置主机名和端口号 proxy_host <- proxy_port <- # 使用httpRequest库的get函数下载图片 response <- httpRequest(", proxyHost proxy_host, proxyPort proxy_port) # 确保请求成功 if (response$sta…

GPT 写作与改编

GPT 写作与改编 文商科GPT 写作收益 改编技巧【改编一段话】【改编评价】【意识预设】落差&#xff0c;让顾客看到就感性和冲动害怕&#xff0c;让顾客看到就想买和拥有画面&#xff0c;切换空间&#xff0c;瞬间代入&#xff0c;勾人魂魄对比&#xff0c;设置参考物&#xff0…

JLMR Micro Super Resolution Algorithm国产微超分算法DEMO

一、简介 目前&#xff0c;做超分算法基本还是以AI训练为主&#xff0c;但是AI基本上都是基于既定场景的训练。而传统的算法基本上都是利用上下文的纹理预测、插值等方案&#xff0c;在图像放大过程中会出现模糊&#xff0c;或马赛克等现象。 我们基于加权概率模型&#xff0c…