YuKongEr / SpringBoot-Study

study springboot

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

chapter5 事物问题怎么解决

quanfuli opened this issue · comments

chapter5 事物问题怎么解决

但数据源下 事物是没有问题 一个方法多个数据源 还在解决中 抱歉了

我在service层中加入@Trasactional注解的方法无法切换数据源

拉最新代码

我看的就是8月17号的代码,看了一遍,在你的代码里也没有使用@Trasactional。我只有把@Trasactional加到controller层才可以。DynamicDataSourceAspect类@aspect也都是注释的,难道哪里有问题。我试的还是不好用

嗯 是这样的 你不能用@Trasactional 因为spring中事物是缓存在 ThreadLocal中 这样会导致复用一个conncetion 那么determineCurrentLookupKey方法不对调用

如果是当数据源的事物 你可以使用 @Trasactional 如果一个service的方法 存在 slave1的数据源 slave2的数据源 这样会导致slave2的数据源不会切换 因为核心方法determineCurrentLookupKey没有执行 这也是我为什么说 不支持多数据事物 ,去掉@Trasactional 就会生效

我想问一下DynamicDataSourceAspect类执行了吗,如果没这个,当前的数据源事物还是不能执行吧。我不是太明白我感觉@Trasactional 执行的时候datasource要先执行。

执行了啊 但是因为是一个事物 即使你使用了DataSourceHolder.setDataSourceType也没有用 因为真正切换数据源的determineCurrentLookupKey没有执行