-
动态切换数据源使用两种方式:AOP拦截(自定义注解DataSource)、代码里动态切换
-
使用@Transactional与@DataSource
若DataSource的切面order低于事务的aop切面,是没有问题的 -
使用@Transactional与代码切换数据源
切换数据源无效 -
使用编程事务与@DataSource
没有问题 -
使用编程事务与代码切换数据源
- 编程事务包裹代码切换数据源
切换数据源无效 - 编程事务不包裹代码切换数据源
没有问题
事务 | 数据源切换 | 组合方式 | 事务效果 | 数据源效果 | 备注 |
---|---|---|---|---|---|
@Transactional | @DataSource | 数据源切面order低于事务切面order(Integer.MAX) | 有效 | 有效 | |
@Transactional | 代码切换数据源 | 有效 | 无效 | 事务代理的数据源为原数据源 | |
编程事务 | @DataSource | 有效 | 有效 | 事务代理的数据源为切换后的数据源 | |
编程事务 | 代码切换数据源 | 编程事务包裹代码切换数据源 | 有效 | 无效 | 事务代理的数据源为原数据源 |
编程事务 | 代码切换数据源 | 编程事务不包裹代码切换数据源 | 有效 | 有效 | 事务代理的数据源为切换后数据源 |
网友评论