博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot多数据源事物失效
阅读量:6175 次
发布时间:2019-06-21

本文共 1316 字,大约阅读时间需要 4 分钟。

hot3.png

SpringBoot使用多数据源时,事物控制

码云地址

https://gitee.com/imbobo_bo/angel-bo

代码

@Bean    public SqlSessionFactory sqlSessionFactoryBean(DynamicDataSource dynamicDataSource) throws Exception {        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();        sqlSessionFactoryBean.setDataSource(dynamicDataSource);        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();        sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath:/mapper/*.xml"));        sqlSessionFactoryBean.setTypeAliasesPackage("com.angel.bo.beans.admin.entity");        return sqlSessionFactoryBean.getObject();    }

DynamicDataSource 这个为动态数据源配置

/** * 使用DatabaseContextHolder获取当前线程的DatabaseType */public class DynamicDataSource extends AbstractRoutingDataSource {    @Override    protected Object determineCurrentLookupKey() {        return DataSourceContextHolder.getDataSourceType();    }}

开启springBoot事物管理

@EnableTransactionManagement

servic类上加上事物注解

@Service@Transactional(rollbackFor = Exception.class)

现象

在上面代码,执行方法时,事物失效,不回滚

解决

缺少针对动态数据源的事物控制

@Bean    public DataSourceTransactionManager transactionManager(DynamicDataSource dynamicDataSource) {        return new DataSourceTransactionManager(dynamicDataSource);    }

转载于:https://my.oschina.net/angelbo/blog/2998719

你可能感兴趣的文章
【一】java 虚拟机 监控示例 Eclipse Memory Analyser
查看>>
JZ-C-16
查看>>
Ganglia监控搭建
查看>>
安装与配置Tomcat8
查看>>
maven
查看>>
mybatis由浅入深day01_9动态sql(9.5sql片段_9.6foreach)
查看>>
软件过程与项目管理(第五周作业)
查看>>
读懂diff
查看>>
第四次实训作业
查看>>
07.05.03
查看>>
201521123068《Java程序设计》第6周学习总结
查看>>
IIS是如何处理ASP.NET请求的
查看>>
CrawlSpider爬虫
查看>>
华为网络设备常用命令
查看>>
一个利用随机颜色切换测试你单击鼠标的反应能力
查看>>
jmeter分布式压测
查看>>
python实现三级菜单
查看>>
Android利用数据库传送数据
查看>>
矩形的个数
查看>>
22、整合mybatis
查看>>