0
我有做一些工作服務:Spring的事務中 - 新需要 - 回滾父
@Service
@Transactional
public class FooServiceImpl implements FooService {
@Override
public void invoke() {
process();
}
public void process() {
// possible that will throw exception
elements.forEach -> processOne(..)
}
@Transactional(propagation = Propagation.REQUIRES_NEW)
public void processOne(..) {
// possible that will throw exception
}
}
的invoke()
方法是從另一個組件調用。據我所知這種方法是在交易中運行(如果存在 - 繼續,如果沒有 - 創建一個新的)。但我所期望的 - 方法processOne(..)
正在運行新的交易 - 所以如果在這一個一切都沒問題,交易應該提交。但是如果發生錯誤,那麼整個過程就會回滾。不僅從當前的交易。怎麼了 ?