有人可以帮忙。
场景是我想从其他方法调用内部调用一个新方法而不影响方法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中有没有更好的方法呢。
由于 此致
答案 0 :(得分:0)
如果NewClass
是服务/组件,您可以在methodC中调用它
newClassInstance.methodD()
然后我会建议在methodD
@Transactional(propagation=REQUIRES_NEW)
这样做,spring将为methodD执行启动一个新事务,如果这个失败,它将只回滚方法D中所做的更改
但是,如果在没有捕获的情况下从methodD抛出异常,它也将回滚先前的事务