spring中的事务回滚
1.定义 事务的提交是指事务里的所有操作都正常完成。 事务的回滚是指程序或数据处理错误,将程序或数据恢复到上一次正确状态的行为。 2.代码中事务控制的3种方式 编程式事务:就是直接在代码里手动开启事务,手动提交,手动回滚。优点就是可以灵活控制,缺点就是太麻烦了,太多重复的代码了。 声明式事务:就是使用SpringAop配置事务,这种方式大大的简化了编码。需要注意的是切入点表达式一定要写正确。 注解事务:直接在Service层的方法上面加上@Transactional注解,个人比较喜欢用这种方式。 3.事务不回滚的原因 在工作中,看过别人写的代码出现了事务不回滚的现象。当然,事务不回滚的都是采用的声明式事务或者是注解事务;编程式事务都是自己写代码手动回滚的,因此是不会出现不回滚的现象。 再说下声明式事务和注解事务回滚的原理:当被切面切中或者是加了注解的方法中抛出了RuntimeException异常时,Spring会进行事务回滚。默认情况下是捕获到方法的RuntimeException异常,也就是说抛出只要属于运行时的异常(即RuntimeException及其子类)都能回滚;但当抛出一个不属于运行时异常时,事务是不会回滚的。 下面说说我经常见到的3种事务不回滚的产生原因: (1)声明式事务配置切入点表达式写错了,没切中Service中的方法 (2)Service方法中