记一个 @Resource BUG

严格来说并不是BUG,只是我对这个注解理解有误

场景: 项目中存在两个分支,需要我将第一个分支中的代码复制到第二个分支中,并将其中的controller,service,mapper单独复制一份并在类名前加上前缀

service中的bean的注入方式是@Resource,变量名就是类名的小写,我将mapper复制一份之后,service只更改了注入Bean的类名,没有修改bean的变量名,然后直接报错了

复制代码
Exception encountered during context initialization - cancelling refresh attempt: 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '一个Controller': Injection of resource dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '一个ServiceImpl': Injection of resource dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '一个ServiceImpl': Injection of resource dependencies failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '一个ServiceImpl': Injection of resource dependencies failed; nested exception is 
org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named '同下的Mapper' is expected to be of type '全类名.Mapper' but was actually of type 'com.sun.proxy.$Proxy341'

The bean 'xxxMapper' could not be injected as a '全类名.前缀XxxMapper' because it is a JDK dynamic proxy that implements:
	com.baomidou.mybatisplus.core.mapper.BaseMapper


Action:

Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on @EnableAsync and/or @EnableCaching.

甚至还报redis连接超时.....

我下意识的认为是mybatis中的xml写的有问题(这玩意出问题之后报错信息也挺奇怪的),于是一个个找,一个个看是哪个文件,捣鼓了两个小时也没找到啥问题,最后才发现是注入的问题

我只知道 @Resource 会先使用BeanName注入变量,被spring注册的Bean使用类名小写开头作为beanName,但是我不知道@Resource使用的BeanName是TM的变量名啊,这就导致使用变量名查找到的bean不能被注入到我复制出来的那个bean中,并且由于找到了bean还不会使用type来继续查找bean。。。这就导致查找的bean不能被注入到变量中导致报错,回过头来发现原本的报错信息好像挺准确的...

最后将注入方式改成了@Autowired就能正常启动了(或者把变量名改了)

相关推荐
IT小白杨9 分钟前
eBay多账号如何应对关联判定:主体、收款、IP、环境四层配置清单一次讲清
java·网络·网络协议·tcp/ip·自动化·指纹浏览器
我是唐青枫10 分钟前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
开发语言·c#·.net
程序猿编码19 分钟前
纯C++轻量计算机视觉推理引擎:基于GGML的端侧CV模型部署技术全解析
开发语言·c++·计算机视觉·大模型·transformer
SEO_juper37 分钟前
外贸多语言站最隐蔽的流量杀手:hreflang 错了,谷歌把德语页推给美国人(附审计脚本)
开发语言·前端·python·seo·独立站·谷歌优化
無a伟1 小时前
RabbitMq高级特性:TTL,死信队列,延迟队列
java·分布式·rabbitmq
geovindu1 小时前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式
长谷深风1111 小时前
Agent 跑了 30 分钟宕机,如何从断点继续?
java·大数据·人工智能·ai·大模型·memory·aiagent
慧都小妮子1 小时前
DevExpress Java 文档处理 API 免费 CTP:PDF、PowerPoint、条码与跨平台部署
java·pdf·powerpoint·devexpress·文档处理·条码生成
泡海椒1 小时前
告别反射低效:JQuick-Java ASM动态调用链性能优化实战
java·python·性能优化
Tairitsu_H1 小时前
[C++] C++11新增构造:列表初始化和std::initializer_list
开发语言·c++·c++11·构造