(原)

spring 事务目前有二种,注解式和声明式,以前都是以公司里的框架写好的,没有学习的机会,今天抽空好好试了下,结果遇到好多问题。

1、注解式

最开始是这么玩的,发现数据进数据库了,没有起作用,然后各种搜索,终于找到问题了,在@Transactional中,默认只有抛出运行时异常才会回滚,也就是说throw new RuntimeException();而我这里是Exception。

在spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作。

在这里,RuntimeException是非检查型异常,Exception是检查型异常

这里有二种解决办法,1、将Exception类改为RuntimeException类抛出,2、将@Transactional注解改为@Transactional(rollbackFor = Exception.class),也就是说检查型异常一样回滚。二种改法结果测试都通过。

2、声明式

由于是在网上找的例子建的ssm框架,例子中并没有事务,所以才需要添加,注解的方式成功后,下面来试试声明式的,结果一上来就发现报错

网上搜了一下,发现是少jar包引起的

ava.lang.NoClassDefFoundError:org/aspectj/weaver/reflect/ReflectionWorld$ReflectionWorldException

缺少的两个jar包:aspectjrt.jar;aspectjweaver.jar ,这是springAOP所依赖的包

加进这二个JAR包以后,启动成功。

跟注解式的一样,抛出Exception异常数据一样进数据库,而抛出RuntimeException异常成功回滚,然后在tx:method中一样找到了rollback-for的属性,加上去后,Exception异常也能成功回滚了

最新文章

  1. django表单
  2. 制作简单的2D物理引擎(一)——动力学基础
  3. Gradle笔记系列(一)
  4. OpenJDK将对Android开发产生怎样的影响?
  5. poi管道流的导入导出
  6. c 指针(一)
  7. 团队项目(NABC分析)
  8. Some code changes cannot be hot swapped into a running virtual machine,
  9. java学习之数组排序一:选择排序
  10. [转]Java远程方法调用
  11. 关于多本小说站的SEO—从”易读中文网”获得的心得体会
  12. java中的浮点(float)运算
  13. jQuery Mobile 网格
  14. Struts分页
  15. Python学习之编写三级菜单(Day1,作业二)
  16. Eclipse 编码区-保护色-快捷大全
  17. (中等) POJ 2528 Mayor's posters , 离散+线段树。
  18. JQ 获取地址栏参数
  19. .net大型分布式电子商务架构说明
  20. 如何使用 Visual C# 2005 或 Visual C# .NET 向 Excel 工作簿传输数据

热门文章

  1. TCP/IP笔记(六)TCP与UDP
  2. AspNetPager 分页的详细用法(ASP.NET)
  3. 【转载】rem自适应布局-移动端自适应必备
  4. xmlplus 组件设计系列之二 - 按钮
  5. Js 网页版扫雷游戏代码实现
  6. 基于header的一些常用指令详解
  7. hibernate 多对多关系总结
  8. fstream 学习
  9. Android 窗口全屏
  10. mysql sql语句