news 2026/2/6 22:50:14

Error creating bean with name ‘xxxxxxxController‘: Injection of resource dependencies failed报错已解决

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Error creating bean with name ‘xxxxxxxController‘: Injection of resource dependencies failed报错已解决

Error creating bean with name ‘XXXController’: Injection of resource dependencies failed

问题已解决:4 种高频原因全面排查指南

一、项目场景

在一次Spring Boot + MyBatis的后台项目开发过程中,项目结构、依赖、配置看似全部完成,但在启动项目时却直接报错,控制台抛出了熟悉又让人头大的异常:

Error creating bean with name ‘xxxxxxController’: Injection of resource dependencies failed

项目无法启动,Controller Bean 注入失败,开发直接被“卡死”。

这种问题在 Spring Boot 项目中非常常见,尤其是在刚接触 MyBatis、XML Mapper 配置或包路径配置时,几乎人人都会踩坑。

本文将结合一次真实踩坑经历,系统性地总结 4 种最常见的错误原因,只要你逐条排查,总有一种能帮你快速定位问题。


二、问题描述

1️⃣ 项目目录结构(示例)

一个典型的 Spring Boot + MyBatis 项目结构如下:

com.example.demo ├── controller │ └── UserController.java ├── service │ ├── UserService.java │ └── impl │ └── UserServiceImpl.java ├── dao │ └── UserMapper.java ├── entities │ └── User.java └── mapper └── UserMapper.xml

代码编译无误,IDEA 也不报红,但一运行项目,直接启动失败。


2️⃣ 报错信息核心提示

Error creating bean with name 'userController': Injection of resource dependencies failed

本质含义只有一句话:

Spring 在创建 Controller Bean 时,无法成功注入其依赖对象(Service / Mapper)


三、原因分析(4 种高频踩坑点)

原因一:Mapper 接口缺少@Mapper注解

❌ 错误示例
publicinterfaceUserMapper{UserselectById(Longid);}

Spring无法扫描到 Mapper,自然也无法注入。

✅ 正确做法
@MapperpublicinterfaceUserMapper{UserselectById(Longid);}

或者在启动类统一扫描:

@MapperScan("com.example.demo.dao")@SpringBootApplicationpublicclassDemoApplication{publicstaticvoidmain(String[]args){SpringApplication.run(DemoApplication.class,args);}}

原因二:Service 实现类缺少@Service注解

❌ 错误示例
publicclassUserServiceImplimplementsUserService{}

接口有了,实现类却没被 Spring 托管。

✅ 正确做法
@ServicepublicclassUserServiceImplimplementsUserService{}

记住一句话

Controller 能不能注入 Service,取决于 Service 是否是 Spring Bean。


原因三:Mapper.xml 参数类型或路径映射错误

这是最容易被忽略、也最容易出问题的一类

1️⃣ parameterType 写成类名
<selectid="selectById"parameterType="User">select * from user where id = #{id}</select>

如果你这样写,就必须在配置文件中声明实体包别名

✅ application.yml 正确配置
mybatis:type-aliases-package:com.example.demo.entities

2️⃣ 不想配别名?那就写全限定名
<selectid="selectById"parameterType="com.example.demo.entities.User">

二选一即可,否则必错。


原因四(最隐蔽,也是最坑的):包名大小写写错

这是我这次真正踩到的“血案级错误”。

实体类真实包名是:
com.example.demo.entitles
但我在配置文件中写的是:
mybatis:type-aliases-package:com.example.demo.Entitles

⚠️ 注意:
一个大写字母,就足以让路径映射彻底失效。


❌ 错误的后果

  • MyBatis 找不到实体类
  • Mapper.xml 加载失败
  • Mapper Bean 创建失败
  • Service 注入失败
  • Controller 注入失败
  • 最终抛出:Injection of resource dependencies failed

四、解决方案(完整排查清单)

当你遇到这个错误时,请按下面顺序逐条检查

✅ 1. Mapper 接口

  • 是否加了@Mapper或使用了@MapperScan

✅ 2. Service 实现类

  • 是否加了@Service
  • 是否放在 Spring 扫描路径下

✅ 3. Mapper.xml

  • namespace是否与 Mapper 接口全限定名一致
  • parameterType / resultType是否正确
  • 是否配置了type-aliases-package

✅ 4. 包名大小写

  • 实体包名
  • yml / properties 中配置的包名
  • XML 中引用的类名

一个字符都不要想当然。


五、配置文件小建议(新手强烈推荐)

为什么推荐application.properties

  • 优先级高于application.yml
  • 不依赖缩进
  • 不容易因为格式错误导致配置失效
示例
mybatis.type-aliases-package=com.example.demo.entities mybatis.mapper-locations=classpath:mapper/*.xml

对于新手来说,容错率更高,排错成本更低


六、总结

  • Injection of resource dependencies failed不是一个具体错误

  • 它只是告诉你:Spring 没法正常装配 Bean

  • 真正的问题,往往藏在:

    • 注解缺失
    • XML 配置
    • 路径映射
    • 包名大小写

永远不要因为“感觉自己都写对了”而跳过排查。

很多时候,Bug 不是复杂,而是你没想到它可以这么简单。

希望这篇文章,能帮你少踩一次坑。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 2:50:01

ERROR. pos 145, line 2, column 21, token COMMA 报错已解决

ERROR. pos 145, line 2, column 21, token COMMA 报错已解决 在软件开发过程中&#xff0c;尤其是 Java、C 以及基于模板的配置文件中&#xff0c;偶尔会遇到编译器或 IDE 报出的类似如下错误&#xff1a; ERROR. pos 145, line 2, column 21, token COMMA虽然错误提示看起来枯…

作者头像 李华
网站建设 2026/2/3 20:32:14

收藏!大模型技术与应用体系梳理(小白程序员入门必看)

大模型技术开发属于多学科交叉的复杂领域&#xff0c;对初学者而言&#xff0c;搭建一套清晰的基础认知体系是关键——唯有理清核心逻辑&#xff0c;才能明确学习方向、掌握实操路径&#xff0c;避免在繁杂概念中迷失。 随着大模型技术的普及&#xff0c;笔者在与同行、技术爱好…

作者头像 李华
网站建设 2026/1/30 8:00:29

别管,咱们前端人有自己的拼夕夕~

这份清单&#xff0c;是无数次面试复盘后沉淀下来的“考点最大公约数”&#xff0c;是八股文里的精华。它由十六个经典模块构成&#xff0c;像积木一样&#xff0c;能拼出绝大多数大厂面试的轮廓&#xff1a; 1.JavaScript 深度解剖室&#xff1a;这里不问“怎么用”&#xff…

作者头像 李华
网站建设 2026/1/30 17:11:55

强烈安利10个一键生成论文工具,继续教育学生轻松搞定论文!

强烈安利10个一键生成论文工具&#xff0c;继续教育学生轻松搞定论文&#xff01; AI 工具如何助力论文写作&#xff1f; 在当今信息爆炸的时代&#xff0c;继续教育学生面对的论文写作任务日益繁重。传统的写作方式不仅耗时费力&#xff0c;还容易因思路不清晰或资料不足而陷入…

作者头像 李华
网站建设 2026/2/3 9:00:44

基于OpenPLC的产线控制实战案例详解

用树莓派OpenPLC重构产线控制&#xff1a;一个工业自动化工程师的实战手记最近接手了一个老产线升级项目&#xff0c;客户原用的是三菱FX3U PLC&#xff0c;配了个触摸屏&#xff0c;运行了快八年。系统稳定但扩展性极差——想加两个传感器&#xff1f;得换PLC模块、改接线、重…

作者头像 李华
网站建设 2026/2/6 14:59:55

从巨额亏损中提炼出的3条颠覆性交易心法

引言&#xff1a;你是否也在用“猜谜”的方式炒股&#xff1f;你是否也曾在股市的海洋中感到迷茫&#xff1f;每天被海量的信息淹没&#xff0c;反复追涨杀跌&#xff0c;最终却发现账户数字不增反减。我们总想找到那个能够精准预测市场的“水晶球”&#xff0c;但现实往往是&a…

作者头像 李华