aop声明式事务不起作用的原因

因为在业务层调用了 try{}catch(){} 并且异常没有在catch处抛出来,所以spring aop的事务不起作用

Spring AOP异常捕获原理:
        被拦截的方法,须显式的抛出异常,且不能做任何处理,这样AOP才能捕获到方法中的异常,进而进行回滚。
        换句话说,就是在Service层的方法中,不需要使用 try...catch
  或者在catch中的最后加上 throw new RuntimeException();

这样程序才会被AOP捕获,进而进行回滚。

原文地址:https://www.cnblogs.com/west-iversion/p/12173662.html

时间: 2024-07-28 17:23:20

aop声明式事务不起作用的原因的相关文章

spring mvc + mybatis + spring aop声明式事务管理没有作用

在最近的一个项目中,采用springMVC.mybatis,发现一个很恼人的问题:事务管理不起作用!!网上查阅了大量的资料,尝试了各种解决办法,亦未能解决问题! spring版本:3.0.5 mybatis版本:3.2.2 1.applicationContext.xml配置: mvc + mybatis + spring aop声明式事务管理没有作用" title="spring mvc + mybatis + spring aop声明式事务管理没有作用">2.spr

Spring AOP声明式事务的缺陷

Spring AOP声明式事务的缺陷 今天项目验收时遇到的一个问题,记录一下 转载:http://liuu.iteye.com/blog/422810 [问题]        Spring的声明式事务,我想就不用多介绍了吧,一句话“自从用了Spring AOP啊,事务管理真轻松啊,真轻松:事务管理代码没有了,脑不酸了,手不痛了,一口气全配上了事务:轻量级,测试起来也简单,嘿!”.不管从哪个角度看,轻量级声明式事务都是一件解放生产力的大好事.所以,我们“一直用它”. 不过,最近的一个项目里,却碰到

spring aop 声明式事务管理

Spring使用AOP来完成声明式的事务管理   有annotation和xml两种形式 代码和上一篇基本相近,再贴一遍 两个实体类 package com.ouc.wkp.model; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity(name = "t_log") public class Log { priva

Spring AOP声明式事务异常回滚

转:http://hi.baidu.com/iduany/item/20f8f8ed24e1dec5bbf37df7 近日测试用例,发现这样一个现象:在业务代码中,有如下两种情况,比如:throw new RuntimeException("xxxxxxxxxxxx"); 事物回滚throw new Exception("xxxxxxxxxxxx"); 事物没有回滚 自以为很了解事物,或许时间久远的缘故,没分析出来何故,遂查阅了下资料,写下了如下的内容,供参考: 1

Spring注解驱动开发(四)-----aop、声明式事务

AOP 概念 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式:-----基于动态代理 一个aop示例 1.导入aop模块:Spring AOP:(spring-aspects)-----导入相关jar包 2.MathCalculator-----一个业务逻辑的类-----在业务逻辑运行的时候将日志进行打印(方法之前.方法运行结束.方法出现异常,xxx) package com.atguigu.aop; public class MathCalculator { publ

实现自己的BeanFactory、AOP以及声明式事务

实现自己的BeanFactory                                                                   在使用spring时,我们很少用"new"关键字创建对象,而是通过spring容器BeanFactory提供的getBean()方法得到对象: BeanFactory ctx = new ClassPathXmlApplicationContext(); 通过spring容器统一管理bean的创建,避免了代码中四处散落的&

【Spring】—AOP之AspectJ注解方式实现声明式事务管理

前言 这回来说下注解方式的声明式事务管理. 正文 Demo 1.引入相关的jar包这里写图片描述 2.引入AOP约束<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/con

spring的学习____12 声明式事务(AoP的横向织入)

1.事务的介绍: 事务涉及到数据的一致性问题. 事务:要么都成功,要么都不成功! 事务的四大特性: ACID :原子性:一致性:隔离性:持久性. 编程中遇到的实际问题: 在如下的实现类(UserDaoImpl)中,执行了:先添加一个user,再删除一个user的操作,最后打印出所有的用户列表. 当我们人为的在删除代码写错时(即就不能成功执行删除操作),发现程序还是执行了添加和打印用户列表的其余两步,这就不符合事物的一致性. public class UserDaoImpl implements

spring 声明式事务管理

简单理解事务: 比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱:然后ATM出1000元钱.这两个步骤必须是要么都执行要么都不执行.如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元:如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元.所以,如果一个步骤成功另一个步骤失败对双方都不是好事,如果不管哪一个步骤失败了以后,整个取钱过程都能回滚,也就是完全取消所有操作的话,这对双方都是极好的. 当这两个步骤提交了,执行完毕