遇到的问题之“加入Spring的事务 @Transactional(rollbackFor = Exception.class)导致@DS数据库切换失效”
遇到的问题之“加入Spring的事务 @Transactional(rollbackFor = Exception.class)导致@DS数据库切换失效”
1. 核心问题:事务与数据源的绑定时机
执行流程问题:
-
事务切面先执行:Spring 的
@Transactional切面先执行 -
获取数据库连接:事务管理器从默认数据源获取连接
-
开启事务:在默认连接上开启事务
-
DS切面后执行:
@DS注解的切面后执行,尝试切换数据源 -
数据源切换失败:此时连接已绑定到事务,无法再切换
2. 代码层面的详细分析
3. 具体表现场景
场景1:嵌套服务调用
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王先生
* 我的网易邮箱:wzw_1314_520@163.com

浙公网安备 33010602011771号