import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.aspectj.lang.ProceedingJoinPoint;
import org.springframework.core.Ordered;
import org.springframework.util.StopWatch;
public class ExceptionDeal implements Ordered,MethodInterceptor{
private int order;
private Log log = LogFactory.getLog(ExceptionDeal.class);
public int getOrder() {
// TODO Auto-generated method stub
return this.order;
}
public void setOrder(int order) {
this.order = order;
}
// this method is the around advice
public Object profile(ProceedingJoinPoint call) throws Throwable {
Object returnValue;
StopWatch clock = new StopWatch(getClass().getName());
try {
clock.start(call.toShortString());
try{
returnValue = call.proceed();
}catch(Exception e){
e.printStackTrace();
throw new Exception();
}
} finally {
clock.stop();
log.info(clock.prettyPrint());
}
return returnValue;
}
public Object invoke(MethodInvocation invocation) throws Throwable {
// TODO Auto-generated method stub
log.info("Before: invocation=[" + invocation + "]");
Object rval = invocation.proceed();
log.info("Invocation returned");
return rval;
}
}
<!-- 事务通知类 -->
<bean id="profiler"
class="ExceptionDealClass">
<property name="order" value="2" />
</bean>
<aop:aspect id="profilingAspect" ref="profiler">
<!-- 通知类型为after-throwing-->
<aop:around method="profile"
pointcut-ref="productServiceMethods"/>
</aop:aspect>
相关推荐
### Spring事务与数据库操作 #### 一、Spring的声明式事务管理 在现代软件开发中,事务处理是非常关键的一部分,特别是在涉及多个数据操作时。Spring框架提供了强大的事务管理能力,可以方便地集成到应用程序中。...
Spring事务机制是Java开发中非常重要的一个概念,它在企业级应用中扮演着核心角色,确保数据的一致性和完整性。Spring提供了多种事务管理方式,包括编程式事务管理和声明式事务管理。在这篇DEMO中,我们将重点探讨...
本篇文章将详细解析Spring中的六种事务配置方法,帮助开发者深入理解并掌握Spring事务的运用。 1. **基于XML的事务配置** Spring支持通过XML配置来管理事务,这是最基础的配置方式。在`spring`的配置文件中,我们...
### Spring事务管理详解 #### 一、Spring事务管理概述 Spring框架提供了强大的事务管理功能,使得开发者能够更方便地管理应用程序中的事务。Spring事务管理主要包括两种类型:编程式事务管理和声明式事务管理。 -...
spring事务管理几种方式代码实例:涉及编程式事务,声明式事务之拦截器代理方式、AOP切面通知方式、AspectJ注解方式,通过不同方式实例代码展现,总结spring事务管理的一般规律,从宏观上加深理解spring事务管理特性...
事务通知定义了哪些方法应该在事务内执行。使用`<tx:method>`标签,可以指定匹配的方法名、传播行为、读写性质、隔离级别和超时时间。例如: ``` *" read-only="false"/> ``` 这将使所有以`save`开头的方法都...
接下来,我们需要定义事务通知,包括定义方法的过滤规则,所有方法都使用事务,并且定义所有 get 开头的方法都是只读的。 最后,我们需要定义 AOP 配置,包括定义一个切入点,定义事务的通知,进行适配。 基于 @...
本练习主要涵盖了Spring的三个方面:面向切面编程(AOP)、JDBC(Java Database Connectivity)以及事务管理(TX)。让我们详细探讨这些知识点。 1. **Spring AOP(面向切面编程)** 面向切面编程是Spring框架的一...
在Spring框架中,AOP(面向切面编程)是一种强大的设计模式,它允许开发者将关注点从业务逻辑中分离出来,比如日志记录、事务管理等。本文将深入探讨Spring AOP中的前置通知和后置通知,以及它们在实际开发中的应用...
在深入探讨Spring通知的配置之前,我们先简要回顾一下Spring框架的核心概念。Spring是一个开源的、轻量级的Java应用框架,旨在简化企业级应用的开发。它提供了丰富的功能,包括依赖注入(Dependency Injection,DI)...
在IT行业中,MyBatis、Spring AOP、Spring事务管理和反射工具类是常见的技术栈,它们在构建高效、灵活的企业级应用中起着至关重要的作用。以下是对这些知识点的详细阐述: 1. MyBatis拦截器(MyBatis Interceptor)...
本篇文章将深入探讨Spring事务管理的基础知识、工作原理以及如何在实际项目中应用。 首先,事务是数据库操作的基本单位,它确保了一组操作要么全部成功,要么全部失败,从而保证了数据的完整性和一致性。在Spring中...
Spring 声明式事务处理 Spring 中的事务处理可以分为两种方式:声明式事务处理和编程式事务处理。声明式事务处理通过 AOP 的实现,把事务管理代码作为方面封装到业务代码中,使得事务管理代码和业务代码解藕。这...
本例"spring通知例子"着重展示了如何利用Spring AOP实现操作日志的拦截,这涉及到前置通知(Before Advice)和后置通知(After Advice)的概念。 首先,我们需要理解什么是Spring AOP。AOP的核心是切面(Aspect),...
声明式事务处理的核心是基于AOP(面向切面编程)的,Spring通过在事务边界添加通知(advice)来实现事务管理。这包括开始事务、提交事务、回滚事务等操作。用户只需在配置文件或使用注解来声明哪些方法需要在事务中...
例如,可以在XML配置文件中定义一个事务通知,然后将其应用到具有特定注解或接口的类或方法上。这样,当新的DAO或Mgr需要事务支持时,只需要简单地加入对应的注解或实现指定的接口,而无需修改现有的事务配置。 在...
2. **定义事务切面**:创建一个包含事务处理逻辑的切面类,该类通常会包含一个或多个通知(advice),如`@Before`、`@After`、`@Around`等。在Spring中,我们主要使用`@Transactional`注解来声明一个方法需要进行...
- **XML配置**:在Spring的配置文件中定义事务管理器(如`PlatformTransactionManager`),并声明事务的通知(advice),指定哪些方法需要进行事务处理。 - **Java配置**:使用`@EnableTransactionManagement`注解...
通过`aop:advisor`将事务通知与切入点关联起来。 ##### 第三种方式:基于注解的声明式事务 这种方式使用注解来指定事务行为,是目前最常用的事务配置方式。它简洁明了,能够很好地减少配置文件的复杂度。 **配置...
- 事务同步:Spring的`TransactionSynchronization`接口允许你在事务的开始、结束、提交或回滚时执行额外的任务,比如清理缓存或发送通知。 - JTA的并发问题:在多线程环境下,你需要理解如何避免死锁和其他并发问题...