spring事务增强,事务回滚如何判断?希望在前端上有个提示
1 主要处理思路
1.1 思路1
事物回滚,一般抛异常,可以自己手写一个异常,根据异常判断。事物还是按照 spring 的之前的逻辑。只是,手工抛特定的异常。这样你就可以捕获这个异常给前台用户。
1.2 思路2
方法捕获异常抛出即可,记得方法定义必须抛出异常,否则框架捕获不到,声明式事物不起作用。
1.3 总结
我认为上述思路在实现上是统一的。下面给出一个用伪代码描述的例子。
MyException: public class MyException extends RuntimeException { public MyException(){ } } Action中: @Autowired public class XAction { @Autowired private XServicexService xService; public String AddXmethod(){ try { xService.addX (x); //将x存入数据库 } catch (MyException e) { System.out.println("service层出异常了...."); //其它处理,例:加上需要在前端显示的提示信息。 } } } xService中: @Service @Transactional(propagation=org.springframework.transaction.annotation.Propagation.REQUIRED) public class XService{ @Autowired private XDao xDao; public void addX (X x) throws MyException { xDao.addX(x); //人为的创建出一个异常,测试回滚在action中可以被判断。 try { int a =10/0; } catch (Exceptione) { //手工抛出,作用有两个, //1、使用spring事务增强,对事务回滚。 //2、action中可以捕获该异常,并处理,例:在前端显示提示信息。 throw new MyException(); } } }
例子结果说明:
1、事务增强可以通过SpringAOP进行事务增强。
2、事务发生回滚时,Action可以“判断”事务发生了回滚,并处理。
2 参考文献
http://www.jb51.net/article/3... (Spring事务管理只对出现运行期异常进行回滚改变默认方式)
http://www.cnblogs.com/0201zc...(spring 事务回滚)
http://blog.csdn.net/gaowenmi... (spring AOP的异常拦截)
http://www.cnblogs.com/zhuawa... (关于Spring事务回滚的问题)
https://www.oschina.net/quest... (spring的事务insert操作怎么判断是否执行成功了还是回滚了)
济南java技术交流群群主隐士的思路与百度用户mahl8007的思路。
相关推荐
vivenwan 2019-12-17
happyfling 2017-07-23
牧场SZShepherd 2020-01-03
applex 2020-01-02
zhaojp0 2019-11-17
XCMercy 2020-06-25
debugjoker 2020-04-10
snowphy 2020-05-09
予衡飞翔 2020-01-05
csuzxm000 2020-01-09
fengdos 2020-01-04
boredbird 2020-01-03
achiverhai 2019-12-07
大伟爱自由 2018-05-11
industry0 2019-01-23
hehezhou 2018-05-11
lhhhoo 2013-07-17
fairystepwgl 2013-10-14