spring aop与事务小结

项目需要,搭建过程使用了spring+mybatis+mysql,一台服务器需要同时连接两个数据库AB。其中,AB两库分区域部署,各为该区域的主库,领导反馈mysql异步复制不可靠,因此需要在程序里自行实现双写。

踩过的坑:使用spring注解事务,对service层的方法进行注解,

@afterreturning后

用数据源选择器,切换数据源

调用joinpoint的proceed方法,当insert语句执行后,报错主键冲突。

查看日志,切换数据源不成功。

查资料后了解到使用事务注解后,由于我的mybatis sessionfactory归spring管理,事务打开后数据源无法切换。因此永远只能写

一个库。


之后改用 @around作为织入时机,方法调用前使用编程式事务,增加mapper调用的切点,每次mapper执行后不做写库操作,而是把mapper和参数存在内存表中,待事务结束后,建立事务,重复一次内存表的操作,非完美方式解决。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值