当前位置: 首页 > news >正文

【沉浸式解决问题】微服务子模块引入公共模块的依赖后无法bean未注入

目录

  • 一、问题描述
  • 二、场景还原
  • 三、原因分析
  • 四、解决方案
  • 五、拓展知识
  • 参考文献

一、问题描述

在微服务项目中的公共模块进行了Mybatis Plus配置,创建了配置类并添加了@Configuration注解,其他模块引入该模块后不生效
我这里是在Mybatis Plus公共模块中注入了自定义SQL方法,测试模块获取失败

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

在这里插入图片描述


二、场景还原

前情提要:【抽丝剥茧知识讲解】【沉浸式解决问题】自定义MyBatis-Plus 3.5.12中的BaseMapper,并实现真正的批量插入
在文章的最后单独创建了一个模块配置Mybatis-plus,在一个模块内测试没问题,在其他模块测试时就获取不到了


三、原因分析

spring boot启动需要一个启动类,上面有@SpringBootApplication注解,但是该启动类启动时只扫描自己目录下的各种bean,引入的依赖中的正常是不自动装载的


四、解决方案

给公共模块中的bean设置成自动配置就好了

在公共模块的resources目录下创建固定目录
在这里插入图片描述

输入目录名META-INF后回车

META-INF

在这里插入图片描述
继续在META-INF目录下创建spring,要分开创建

spring

在这里插入图片描述
再创建文件
在这里插入图片描述

输入文件名org.springframework.boot.autoconfigure.AutoConfiguration.imports后回车

org.springframework.boot.autoconfigure.AutoConfiguration.imports

在这里插入图片描述
右键配置类复制类路径
在这里插入图片描述
粘贴到org.springframework.boot.autoconfigure.AutoConfiguration.imports中,如果有其他的需要自动配置的bean粘贴在下面即可
在这里插入图片描述
再次运行就注入成功了

@SpringBootTest
public class UserTest {@AutowiredUserMapper userMapper;@AutowiredIUserService userService;void truncate() {userMapper.truncateTable(); // 每次测试前情况表}List<User> userList() {List<User> userList = new ArrayList<>();for (int i = 0; i < 300000; i++) {User user = new User();user.setName("姓名"+i);userList.add(user);}return userList;}@Testvoid test3() {truncate();StopWatch stopWatch = new StopWatch();stopWatch.start();userService.saveBatch(userList());stopWatch.stop();System.out.println(stopWatch.getTotalTimeMillis());}

在这里插入图片描述

五、拓展知识

SpringBoot提供了SPI扩展的方式引入其他依赖中的Bean,即自动装配,SpringBoot2.7以前可以通过配置META-INF/spring.factories文件,
SpringBoot2.7以后可以通过配置META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,不过SpringBoot2.7以后为了兼容以前的版本习惯,依然可以配置META-INF/spring.factories

参考文献

SpringBoot自动配置原理:@EnableAutoConfiguration解析


喜欢的点个关注吧><!祝你永无bug!

/*_ooOoo_o8888888o88" . "88(| -_- |)O\  =  /O____/`---'\____.'  \\|     |//  `./  \\|||  :  |||//  \/  _||||| -:- |||||-  \|   | \\\  -  /// |   || \_|  ''\---/''  |   |\  .-\__  `-`  ___/-. /___`. .'  /--.--\  `. . __."" '<  `.___\_<|>_/___.'  >'"".| | :  `- \`.;`\ _ /`;.`/ - ` : | |\  \ `-.   \_ __\ /__ _/   .-` /  /
======`-.____`-.___\_____/___.-`____.-'======`=---='
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^佛祖保佑       永无BUG
*/

相关文章:

  • 高端品牌网站建设(杭州)怎么创建自己的网址
  • 网站怎样做关键词优化谷歌浏览器下载安装2023最新版
  • 网页设计公司的痛点是什么许昌正规网站优化公司
  • wordpress改foot图标衡阳seo优化推荐
  • 南宁网站公司58同城推广
  • 网站建设推进表北京网站
  • 【笔记】Docker 配置阿里云镜像加速(公共地址即开即用,无需手动创建实例)
  • 14.Linux Docker
  • Web层注解
  • dovi交叉编译方法(编译libdovi.so)
  • selenium4中Chrome浏览器显示浏览器受自动化测试软件控制的解决方法
  • 打造丝滑的Android应用:LiveData完全教程
  • 【机器学习深度学习】常见激活函数
  • 基于MATLAB图像特征识别及提取实现图像分类
  • Docker环境搭建和docker性能监控
  • spring-ai 1.0.0 学习(十五)——RAG
  • 复用对象Aspose.Words 中 DocumentBuilder 的状态管理解析
  • 从理论到实践:马丁格尔策略真实案例验证
  • 【PolarCTF】01
  • 渗透靶场:事件和属性被阻止的反射xss
  • 前端中的 CI/CD 教程详解(附实践方案)
  • 搭建自己的WEB应用防火墙
  • 【MongoDB】MongoDB从零开始详细教程 核心概念与原理 环境搭建 基础操作
  • 【MySQL】12. C语言与数据库的连接
  • 【PyTorch】保存和加载模型
  • ubuntu下好用的软件