欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【沉浸式解决问题】Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

【沉浸式解决问题】Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

2025/6/22 23:17:15 来源:https://blog.csdn.net/AlienProgrammer/article/details/148770740  浏览:    关键词:【沉浸式解决问题】Property ‘sqlSessionFactory‘ or ‘sqlSessionTemplate‘ are required

目录

  • 一、问题描述
  • 二、场景还原
    • 1. 测试mapper
    • 2. 测试service
  • 三、原因分析
  • 四、解决方案
    • 1. DemoApplicationTests
    • 2. DemoApplication
  • 后记

一、问题描述

在Application文件中加了@ComponentScan注解,此后运行任何测试方法均报错

java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: java.lang.IllegalArgumentException: Property ‘sqlSessionFactory’ or ‘sqlSessionTemplate’ are required

在这里插入图片描述
在这里插入图片描述
意思就是缺少'sqlSessionFactory' 或者 'sqlSessionTemplate',导致'testMapper'创建失败,导致'testServiceImpl'创建失败,最后导致ApplicationContextspring的上下文创建失败


二、场景还原

先看下整体目录
在这里插入图片描述

1. 测试mapper

最开始是测试MybatisPlus的BaseMapper中的方法

    @AutowiredUserMapper userMapper;@Testvoid test1() {List<User> userList = new ArrayList<>();userMapper.insert(userList);}

但是报错找不到UserMapper的bean,感觉不对劲,因为mapper文件上都加了@Mapper的注解
在这里插入图片描述
查了一下,然后在Application上加了mapper扫描路径注解,问题算是解决了

@SpringBootApplication
@MapperScan("com.baomidou.mapper")
public class DemoApplication {
}

2. 测试service

接下来测试MybatisPlus的IService中的方法

    @AutowiredIUserService userService;@Testvoid test4() {List<User> userList = new ArrayList<>();for (int i = 0; i < 5; i++) {User user = new User();user.setName("姓名"+i);userList.add(user);}userService.saveBatch(userList,2);}

继续报错找不到IUserService的bean
在这里插入图片描述
再次百度,说是再加上扫描路径,感觉有道理
在这里插入图片描述
加完以后如下

@SpringBootApplication
@MapperScan("com.baomidou.mapper")
@ComponentScan(basePackages = "com.baomidou")
public class DemoApplication {
}

这下坏了,再运行就报问题描述中的错误
在这里插入图片描述
有查到说显示注入一下的,创建了一个AbstractDao仍然没用
在这里插入图片描述


三、原因分析

后续进行控制变量测试,重写创建一个测试类,注释一些代码,最终发现核心问题就是加了@ComponentScan(basePackages = "com.baomidou")这句话,导致spring上下文创建失败,可能是导致默认路径冲突了,最基础的bean也无法生成。
当然,以上只是表象,根本原因是测试类和启动类都在com.example.demo包下,而所有的实体类等文件都在com.baomidou目录下,所以启动错误了
在这里插入图片描述


四、解决方案

为了改动最小,可以把DemoApplication启动类复制到com.baomidou目录下一份,如上图,再把这个删除,然后在测试类中设置启动类,修改结果如下
在这里插入图片描述

1. DemoApplicationTests

import com.baomidou.DemoApplication;@SpringBootTest(classes = DemoApplication.class)
class DemoApplicationTests {
}

2. DemoApplication

@MapperScan还是不能去掉

@SpringBootApplication
@MapperScan("com.baomidou.mapper")
public class DemoApplication {
}

后记

原因很无聊,但是排查的过程很麻烦,大家以后都要细心一点><


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

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词