news 2026/4/4 13:53:20

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/3 1:25:32

莫凡电视:全国地方台全覆盖!流畅播放技术解析

各位影视与电视技术爱好者&#xff0c;今天分享莫凡电视的核心优势——聚焦全国地方台全量覆盖与播放流畅度&#xff0c;技术点扎实易懂&#xff0c;适配智能电视、机顶盒等终端&#xff0c;完美满足不同地区用户观看本地频道的需求。 地方台接收核心采用多协议解码引擎&#…

作者头像 李华
网站建设 2026/4/1 21:46:53

springboot149基于Javaweb的高校图书馆图书借阅管理系统的设计与实现

目录具体实现截图摘要系统所用技术介绍写作提纲源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;具体实现截图 摘要 高校图书馆作为学术资源的核心载体&#xff0c;其信息化管理水平直接影响师生获取知识的效率。基于SpringBoot 1.4.9框…

作者头像 李华
网站建设 2026/4/1 20:43:17

教育体系的变革:编程作为基础技能

教育体系的变革&#xff1a;编程作为基础技能关键词&#xff1a;教育体系变革、编程基础技能、计算思维、编程教育方法、编程教育应用场景摘要&#xff1a;本文深入探讨了教育体系中编程作为基础技能的变革趋势。首先介绍了编程成为基础技能的背景&#xff0c;包括目的、预期读…

作者头像 李华
网站建设 2026/4/2 12:58:01

2026必备!专科生毕业论文痛点全解TOP9 AI论文网站

2026必备&#xff01;专科生毕业论文痛点全解TOP9 AI论文网站 2026年专科生论文写作工具测评维度解析 随着高校教育的不断深化&#xff0c;专科生在毕业论文撰写过程中面临的问题愈发突出。从选题困难、资料查找繁琐到格式规范不熟悉&#xff0c;每一个环节都可能成为阻碍。为帮…

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

《把脉行业与技术趋势》-75-行业研究的目的不是为了写报告,而是为了发现机会。是为了找到未来爆发性增长的行业赛道与该赛道上有竞争力的公司。

“行业研究的目的是找到未来爆发性增长的行业赛道与该赛道上有竞争力的公司。” 简洁、精准&#xff0c;直击核心&#xff0c;已经具备很强的战略洞察力。下面我将从语义优化、逻辑深化、结构拆解、应用场景四个维度为你全面升级和拓展&#xff0c;帮助你在投资、战略、创业或研…

作者头像 李华