Spring的通知(Advice)

 Spring提供了5种Advice类型:

  Interception Around:JointPoint前后调用

  Before:JointPoint前调用

  After Returning:JointPoint后调用

  Throw:JoinPoint抛出异常时调用

  Introduction:JointPoint调用完毕后调用

Interception Around通知

  Interception Around通知会在JoinPoint的前后执行。实现此通知的类需要实现接口MethodInterceptor,示例代码如下:

1 public class LogInterceptor implements MethodInterceptor{
2       public Object invoke(MethodInvocation invocation invocation) throws Throwable{
3            System.out.println("开始审核数据...");
4            Object rval = invocation.proceed();
5            System.out.println("审核数据结束...");
6            return rval;
7 }
8 }    

Before通知

只在JointPoint前执行,实现Before通知的类需要实现接口MethodBeforeAdvice,示例带入如下:



1 public class LogBeforeAdvice implements MethodBeforeAdvice{
2       public void before(Method m,Object[] args,Object target) throw Throwable{
3        System.out.println("开始审核数据...");
4 }
5 }

After Returning通知

  只在JointPoint之后执行,实现After Returning通知的类需要实现接口AfterReturningAdvice,示例代码如下:

 

1 public class LogAfterAdvice implements AfterReturningAdvice{
2        public void afterReturning(Method m,Object[] args,Object target) throws Throwable{
3        System.out.println(“审核数据结束...”);
4 }
5 }

Throw通知

    只在JointPoint抛出异常时执行,实现Throw通知的类需要实现接口ThrowsAdvice,示例代码如下:

1 public class LogThrowAdvice implements ThrowsAdvice{
2       public void afterThrowing(RemoteException ex) throws Throwable{
3          System.out.println("审核数据异常,请检查..."+ex);
4 }
5 }

Introduction通知

  只在JointPoint调用完毕后执行,实现Introduction通知的类需要实现接口IntroductionAdvisor和接口IntroductionInterceptor

时间: 2024-10-29 21:49:37

Spring的通知(Advice)的相关文章

Spring AOP通知实例 – Advice

Spring AOP(面向方面编程)框架,用于在模块化方面的横切关注点.简单得说,它只是一个拦截器拦截一些过程,例如,当一个方法执行,Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能. 在Spring AOP中,有 4 种类型通知(advices)的支持: 通知(Advice)之前 - 该方法执行前运行 通知(Advice)返回之后 – 运行后,该方法返回一个结果 通知(Advice)抛出之后 – 运行方法抛出异常后, 环绕通知 – 环绕方法执行运行,结合以上这三

spring事件通知机制详解

优势 解耦 对同一种事件有多种处理方式 不干扰主线(main line) 起源 要讲spring的事件通知机制,就要先了解一下spring中的这些接口和抽象类: ApplicationEventPublisherAware        接口:用来 publish event ApplicationEvent                  抽象类,记录了source和初始化时间戳:用来定义Event ApplicationListener<E extends ApplicationEvent

Spring横切面(advice),增强(advisor),切入点(PointCut)(转)

Spring横切面(advice),增强(advisor),切入点(PointCut)的一点理解: 1.Spring管理事务有2种,其中一种是HibernateTransactionManager管理 <bean id="txManager"        class="org.springframework.orm.hibernate3.HibernateTransactionManager">        <property name=&qu

011-Spring aop 002-核心说明-切点PointCut、通知Advice、切面Advisor

一.概述 切点Pointcut,切点代表了一个关于目标函数的过滤规则,后续的通知是基于切点来跟目标函数关联起来的. 然后要围绕该切点定义一系列的通知Advice,如@Before.@After.@AfterReturning.@AfterThrowing.@Around等等定义的方法都是通知.其含义是在切点定义的函数执行之前.完成之后.正常返回之后.抛出异常之后以及环绕前后执行对应的切面逻辑. 一个切点和针对该切点的一个通知共同构成了一个切面Advisor.对于一个方法,我们可以定义多个切点都隐

Spring AOP增强(Advice)

Sring AOP通过PointCut来指定在那些类的那些方法上织入横切逻辑,通过Advice来指定在切点上具体做什么事情.如方法前做什么,方法后做什么,抛出异常做什么. Spring中有两种方式定义Pointcut: ·XML文件 ·注解 XML与注解方式类似,学会了一种,另外一种无难度上手. Advice接口的接口继承类: 主要可分为5类增强: ·MthodBeforeAdvice:目标方法实施前增强 ·AfterReturningAdvice:目标方法实施后增强 ·ThrowsAdvice

关于Spring Aop 通知类型

1. 前置通知 * 在目标类的方法执行之前执行. * 配置文件信息:<aop:after method="before" pointcut-ref="myPointcut3"/> * 应用:可以对方法的参数来做校验 2. 最终通知 * 在目标类的方法执行之后执行,如果程序出现了异常,最终通知也会执行. * 在配置文件中编写具体的配置:<aop:after method="after" pointcut-ref="myP

spring中&lt;tx:advice&gt;&lt;/tx:advice&gt;是什么意思

<tx:advice id="tv" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> 这段话是什么意思 意思是这个事物advice的管理者为tr

[转]spring中&lt;tx:advice&gt;&lt;/tx:advice&gt;意义

<tx:advice id="tv" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="save*" propagation="REQUIRED"/> </tx:attributes> </tx:advice>这段话是什么意思? 意思是这个事物advice的管理者为tr

Spring AOP 通知顺序

如果有多个通知在同一连接点执行,那执行顺序如何确定呢? 总共有两种情况:同一切面中通知执行顺序.不同切面中的通知执行顺序. 1.同一切面中通知执行顺序 1)前置通知/环绕通知proceed方法之前部分 2)被通知方法 3)后置通知/环绕通知proceed方法之后部分 annotation方式的顺序:环绕通知proceed方法之前部分---->前置通知---->被通知方法---->后置通知---->环绕通知proceed方法之后部分(多次测试结果显示如此,不知道具体原因) XML配置