记一个 @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就能正常启动了(或者把变量名改了)

相关推荐
Java面试题总结10 分钟前
Python 开发技巧 · 高级装饰器 —— 从基础到工业级实战
开发语言·python
一路向北North24 分钟前
Spring Security OAuth2.0(19):JWT令牌
java·后端·spring
玛卡巴卡ldf28 分钟前
【LeetCode 手撕算法】(细节知识点总结)
java·数据结构·算法·leetcode·力扣
一叶飘零_sweeeet1 小时前
IDEA 插件 Trae AI 最新全攻略(基于 TRAE AI: Coding Assistant 1.7.0.0)
java·intellij-idea·trae
liulilittle1 小时前
Exhaustive drift-fix simulation V2 — KCC on shared-bottleneck wired path.
开发语言·网络·python·tcp/ip·计算机网络·信息与通信·通信
KobeSacre1 小时前
CyclicBarrier 源码
java·jvm·算法
MacroZheng1 小时前
给Claude Code装上这款炫酷的HUD插件,状态信息就一目了然了!
java·人工智能·后端
我登哥MVP2 小时前
Hadoop成长史-从Nutch子项目到大数据生态王者
java·大数据·hadoop·分布式·云原生·云计算
进击切图仔2 小时前
SAM3 微调标注流水线和 Label Studio
java·服务器·前端
名字还没想好☜2 小时前
Go error 处理:errors.Is/As 与错误包装
开发语言·后端·golang·go·错误处理