如何在Spring中用一种事务处理方法管理多个事务?

时间:2018-10-30 00:04:06

标签: java spring spring-mvc spring-data-jpa spring-data

我有下一个代码

@Transactional
public void f1() {
    try {
        lock();
        //some logic
    } catch (Exception ex) {
    } finally {
        releaseLock();
    }


@Transactional(propagation = Propagation.REQUIRES_NEW)
public void lock() {
     repository.doLock();
   }


@Transactional(propagation = Propagation.REQUIRES_NEW)
public void releaseLock() {
         repository.doReleaseLock();
    }

我想要下一个行为:如果某些逻辑锁出了问题,锁将被释放。 在调试和日志中,我看到了非常奇怪的行为。 代码工作流永远不会访问。

所以,我的问题是:如果其中一个失败,则如何正确修改此代码以使3个事务全部回滚?

1 个答案:

答案 0 :(得分:1)

简单的答案,您的代码应仅保留(带有throws语句):

 @Transactional
 public void f1() {    
    //some logic
 }