dataSource already closed

ops/2025/2/27 6:57:56/

之前的代码是单线程跑,由定时任务触发,考虑到以后数据量可能变大,就改用多线程处理,改完之后进行单元测试报错:

org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed at Wed Feb 26 18:33:44 CST 2025

大概意思就是当调用Mapper的时候,数据库连接被关闭了,想了想单线程的时候没事,为啥改为多线程就有问题了,上网查看SpringBoot Test 多线程报错的根本原因(dataSource already closed)_java_脚本之家

发现是由于多线程是异步处理,当执行到调用Mapper的时候,SpringBootTest 启动类的主线程方法已经执行完了,开始销毁容器,导致链接关闭。

解决办法,就是在 单元测试的主线程方法最后面 睡几秒钟,等子线程中的业务执行完,主线程再结束,这样就不会报错了。不过这个错就是出现在单元测试情况下,正常其项目进行调用,Spring容器是不会销毁的


http://www.ppmy.cn/ops/161611.html

相关文章

LLC谐振变换器恒压恒流双竞争闭环simulink仿真

1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他版本可联系代为转换)针对全桥LLC拓扑,利用Matlab软件搭建模型,分别对轻载&#xf…

android keystore源码分析

架构 Android Keystore API 和底层 Keymaster HAL 提供了一套基本的但足以满足需求的加密基元,以便使用访问受控且由硬件支持的密钥实现相关协议。 Keymaster HAL 是由原始设备制造商 (OEM) 提供的动态加载库,密钥库服务使用它来提供由硬件支持的加密服…

string类详解(下)

文章目录 4. string类的模拟实现4.1 构造 析构4.2 c_str4.3 下标遍历4.4 迭代器4.5 插入4.6 删除4.7 查找4.8 赋值4.9 交换4.10 提取子串4.11 比较大小4.12 流插入 && 流提取 5. 现代版写法的String类5.1 完整代码 6. 写时拷贝(了解) 4. string…

LeetCode详解之如何一步步优化到最佳解法:14. 最长公共前缀

LeetCode详解系列的总目录(持续更新中):LeetCode详解之如何一步步优化到最佳解法:前100题目录(更新中...)-CSDN博客 LeetCode详解系列的上一题链接:LeetCode详解之如何一步步优化到最佳解法&am…

VC++ MFC中 CTreeCtrl的自绘

自绘控件通常需要处理WM_DRAWITEM消息或者使用自绘相关的样式,比如Owner Draw。对于CTreeCtrl来说,可能需要设置Owner Draw Fixed或者Variable,这样系统会通知父窗口来绘制各个项。CTreeCtrl的自绘可能涉及到重写OnPaint函数,或者…

grafana K6压测

文章目录 install and runscript.jsoptions最佳实践 report 解析 https://grafana.com/docs/k6/latest/get-started install and run install # mac brew install k6当前目录下生成压测脚本 # create file script.js k6 new [filename] # create file ‘script.js’ in …

介绍一下在自动驾驶 路径规划和 控制算法 详细一些

已思考完成 收起 嗯,用户想了解自动驾驶中的路径规划和控制算法,需要详细一些。我得先整理一下参考内容里的信息,然后有条理地呈现出来。首先,路径规划和控制算法是自动驾驶系统的核心模块,需要分别介绍它们的基本概念…

低代码与开发框架的一些整合[3]

1.基本说明 审批流程是企业内部运营的运行流程,与业务板块进行关联,在企业数智化过程中启动业务串联的作用,与AI业务模型及业务agent整合后,将大大提升企业的运行效率以及降低运营风险。 近期对开源的近40个携带流程平台的项目进…