news 2026/4/16 0:46:25

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/4/16 13:08:09

Eclipse 打开报 `An error has occurred. See the log null` 错误及解决方法

Eclipse 打开报 An error has occurred. See the log null 错误及解决方法 项目场景&#xff1a; 在日常 Java 开发中&#xff0c;Eclipse 是最常用的开发工具之一。我们在 Windows 系统中使用 Eclipse 时&#xff0c;有时会遇到突然无法打开 Eclipse 的情况&#xff0c;报错信…

作者头像 李华
网站建设 2026/4/16 12:55:38

ARM体系结构

一、嵌入式系统的本质与层级嵌入式系统的官方定义是&#xff1a;以应用为中心&#xff0c;以计算机技术为基础&#xff0c;软硬件可剪裁的专用计算机系统。它与通用计算机最大的不同&#xff0c;在于完全围绕具体应用场景设计&#xff0c;可根据需求对功耗、体积、环境适应性、…

作者头像 李华
网站建设 2026/4/16 13:06:00

vivado安装资源推荐:新手自学的最佳路径

Vivado 安装指南&#xff1a;从零开始搭建 FPGA 开发环境 你是不是也曾在搜索“vivado安装”时&#xff0c;被一堆杂乱的教程、失效的链接和复杂的系统要求搞得头大&#xff1f; 明明只是想学点 FPGA 基础逻辑设计&#xff0c;结果第一步—— 装软件 &#xff0c;就卡了三天…

作者头像 李华
网站建设 2026/4/16 12:55:37

上位机软件开发中串口超时机制的设计实践

串口通信“卡死”怎么办&#xff1f;上位机超时机制的实战设计之道你有没有遇到过这样的场景&#xff1a;上位机软件点击“读取参数”&#xff0c;界面瞬间“假死”&#xff0c;鼠标动不了&#xff0c;任务管理器都救不回来&#xff1f;等了整整30秒&#xff0c;才弹出一个“设…

作者头像 李华
网站建设 2026/4/16 14:06:10

React 官方纪录片观后:核心原理解析与来龙去脉

你真的理解 React 的运作方式吗&#xff1f;这段时间在回顾自己过去几年的 React 项目时&#xff0c;我发现一个有点尴尬但很真实的情况&#xff1a; 我能熟练写Hooks、拆组件、做性能优化&#xff0c;但如果有人让我用几分钟解释清楚——React 内部到底是怎么运作的&#xff0…

作者头像 李华