spring 事务管理 手动回滚策略

如果我不用spring的事务代理机制,直接在service代码中进行事务的提交或者回滚处理,那么一般是这样的处理逻辑-->主要有2点:

1:事务流程中,某一节点的数据(正常返回)遇到某值时,进行回滚,执行结果中说明情况.
2:事务流程中,try catch 所有的代码-->保证遇到运行时异常,或者error的时候,进行回滚

现在要用spring的事务管理了,导致在处理提到的第一个情况的时候有个问题,不知道如何解决

就是spring所管理到的业务代码方法,必须要抛出指定异常,才可以回滚

那么,如果我在1中的那种情况,如何保证让service方法,既有返回值,又能回滚呢?

[quote]就是spring所管理到的业务代码方法,必须要抛出指定异常,才可以回滚

那么,如果我在1中的那种情况,如何保证让service方法,既有返回值,又能回滚呢? [/quote]

可以自定义一个业务 异常,这个异常里面可以带 错误代码,即返回值,然后定义这个异常也需要回滚就好了!你在 action层面可以捕获到异常,并且处理

做个判断。if(返回值){
new Exception();
}

顶7454103 附加说明一下:
如果存在这种需求,其本身就是隐含的业务,除了使用7454103 所说的,还有就是分拆成几个对应的子功能。

可以扩展TranscationStatus,自定义异常,捕获来自于自定义的status,进行undo

try{....
throw new Exeception();
}catch(Exeception e){
throw e;
}finally{
return ;
}