今天遇到一个场景,需要 update 多个数据源的数据。
假如数据源 A,有三天 update 语句分别为 a,b,c,数据源 B 的 update 语句为 d,e。
配置了两个transactionManagerA跟transactionManagerB分别对应数据源 A 跟数据源 B。
我在 service 中的代码例子:
@Transactional(transationManager = "transactionManagerA",rollback = Exception.class)
public void updateA(){
a();
b();
c();
updateB();
}
//另一个类或者 AopContext.currentProxy()
@Transactional(transationManager = "transactionManagerB",rollback = Exception.class)
public void updateB(){
d();
e();
}
这样场景下,假如 d 或者 e 出现异常,那么 updateA 也将会 rollback,是不是可以呢?