来自方法内部的Spring调用方法,不会影响调用方法

时间:2018-05-16 08:38:37

标签: spring

有人可以帮忙。

场景是我想从其他方法调用内部调用一个新方法而不影响方法a(),b(),c()

中发生的处理

此外,方法newClass.d(id)中的任何异常都不应影响(),b(),c()中的处理 理想情况下,在方法a()完成其处理之后调用newClass.d(id)

method a()
{
  //calls
   method b()
}

@transnational
method b()
{
  //calls method c
  method c()
}

method c()
{
    //this stores some value into database and gets an id
    //I need this id and want to call another method d(pass ID)
    // i want to call it in a way that if there is any exception in method d(pass ID), its should not affect a(),b(),c()

}

class newClass
{
  method d(id)
  {
    //does something
  }

}

在Spring中有没有更好的方法呢。

由于 此致

1 个答案:

答案 0 :(得分:0)

如果NewClass是服务/组件,您可以在methodC中调用它 newClassInstance.methodD()

然后我会建议在methodD

上添加注释

@Transactional(propagation=REQUIRES_NEW)

这样做,spring将为methodD执行启动一个新事务,如果这个失败,它将只回滚方法D中所做的更改

但是,如果在没有捕获的情况下从methodD抛出异常,它也将回滚先前的事务