---恢复内容开始---

此将实例将在上一讲前置通知的基础上进行配置,前置配置内容:http://www.cnblogs.com/lihuibin/p/7955947.html  具体流程如下:

1. 首先配置后置通知,继续在上一讲的aop包中新建MyAfterReturningAdvice.java类,该类要实现AfterReturningAdvice接口中的public void afterReturning(Object returnValue, Method method,Object[] args, Object target)方法。

 package com.LHB.aop;
import java.lang.reflect.Method;
import org.springframework.aop.AfterReturningAdvice;
public class MyAfterReturningAdvice implements AfterReturningAdvice {
@Override
public void afterReturning(Object returnValue, Method method,
Object[] args, Object target) throws Throwable {
// TODO Auto-generated method stub
//这里只是简单说明原理,在控制台打印一下一句话就好
System.out.println("关闭资源....");
} }

2. 继续新建一个MyMethodInterceptor.java类来实现环绕通知,该类实现MethodInterceptor接口中的public Object invoke(MethodInvocation invocation)方法,如下:

 package com.LHB.aop;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
public class MyMethodInterceptor implements MethodInterceptor { /**
* invocation:表示切入点的方法名称,invocation的方法名框架将会自动检测到提交到这里
*/
@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
// TODO Auto-generated method stub
System.out.println("调用方法前执行...");
//将传来的方法加入到该切入点中
Object obj = invocation.proceed();
System.out.println("调用方法后执行...");
return obj;
} }

3,继续在包下创建MyThrowsAdvice.java类,完成异常通知操作,该类实现了ThrowsAdvice接口,

然后在该类中实现public void afterThrowing(Method method, Object[] args, Object target, Exception ex)方法,在测试该异常通知时可以人为的在目标对象即testService类中的sayHello()或者sayBye()方法中加入一个错误语句即可,测试其他功能时再将此处的错误注释掉。MyThrowsAdvice.java类如下:

 package com.LHB.aop;
import java.lang.reflect.Method;
import org.springframework.aop.ThrowsAdvice;
public class MyThrowsAdvice implements ThrowsAdvice { //该方法在创建类的时候不会自动创建该方法,需要手动敲代码,或者是去帮助文档赋值
public void afterThrowing(Method method, Object[] args, Object target, Exception ex){
System.out.println("出大事了....."+ex.getMessage());
}
}

4. 配置beans.xml文件,如下图:

5. 运行结果:

---恢复内容结束---

aop编程之后置通知,环绕通知和异常通知的更多相关文章

  1. spring aop编程

    1.AOP,面向切面编程(aspect Oriental programing),使用aop,可以将处理切面aspect的代码注入到主程序,通常主程序的主要目的不是处理这些切面aspect,可以防止代 ...

  2. Spring学习之旅(七)基于XML配置与基于AspectJ注解配置的AOP编程比较

    本篇博文用一个稍复杂点的案例来对比一下基于XML配置与基于AspectJ注解配置的AOP编程的不同. 相关引入包等Spring  AOP编程准备,请参考小编的其他博文,这里不再赘述. 案例要求: 写一 ...

  3. Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理

    1.概要 aop:面向方面编程.不改变源代码,还为类增加新的功能.(代理) 切面:实现的交叉功能. 通知:切面的实际实现(通知要做什么,怎么做). 连接点:应用程序执行过程期间,可以插入切面的地点. ...

  4. [原创]java WEB学习笔记106:Spring学习---AOP的通知 :前置通知,后置通知,返回通知,异常通知,环绕通知

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. [转载] Spring框架——AOP前置、后置、环绕、异常通知

    通知类型: 步骤: 1. 定义接口 2. 编写对象(被代理对象=目标对象) 3. 编写通知(前置通知目标方法调用前调用) 4. 在beans.xml文件配置 4.1 配置 被代理对象=目标对象 4.2 ...

  6. Spring -07 -AOP [面向切面编程] - 使用注解@+ AspectJ 方式实现环绕/前/后等通知 -超简洁 --静态代理/动态代理{JDK/cglib}

    1.spring 不会自动去寻找注解,必须告诉 spring 哪些包下的类中可能有注解;使用注解来取代配置文件.1.1 引入xmlns:context ,指定扫描范围 <context:comp ...

  7. Spring 通过XML配置文件以及通过注解形式来AOP 来实现前置,环绕,异常通知,返回后通知,后通知

    本节主要内容: 一.Spring 通过XML配置文件形式来AOP 来实现前置,环绕,异常通知     1. Spring AOP  前置通知 XML配置使用案例     2. Spring AOP   ...

  8. Spring 通过来AOP 实现前置,环绕,异常通知,注解(转)

    本节主要内容:     1. Spring AOP前置通知案例     2. Spring AOP环绕通知案例     3. Spring AOP异常通知案例     4. Spring AOP注解使 ...

  9. spring的几个通知(前置、后置、环绕、异常、最终)

    1.没有异常的 2.有异常的 1.被代理类接口Person.java package com.xiaostudy; /** * @desc 被代理类接口 * * @author xiaostudy * ...

随机推荐

  1. Oracle 锁的等级

    ORACLE里锁有以下几种模式: 0:none 1:null 空 2:Row-S 行共享(RS):共享表锁,sub share 3:Row-X 行独占(RX):用于行的修改,sub exclusive ...

  2. Python中的下划线(转)

    译文原文:https://segmentfault.com/a/1190000002611411 原文地址这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线_的不同用法绝大 ...

  3. 43.1-CAN通讯

    43-CAN通讯 1.CAN 协议简介 CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子 产品著称的德国 BOSCH 公司开发的,并最终成为国际 ...

  4. bat删除过期文件(FORFILES)

    关键词:bat删除过期文件,bat,FORFILES 原文:https://blog.csdn.net/sandy9919/article/details/82932460 --最佳实践 :: IIS ...

  5. linux dmesg 查看系统故障信息

    dmesg 可以查看linux 内核信息 dmesg’命令设备故障的诊断是非常重要的.在‘dmesg’命令的帮助下进行硬件的连接或断开连接操作时,我们可以看到硬件的检测或者断开连接的信息.‘dmesg ...

  6. MySQL中的数据类型以及完整性约束

    数据类型 数据库mysql中也是分很多数据类型的,最常用的就是:数字类型.字符类型.日期类型.枚举与集合类型 一.数字类型: 默认都是有符号的,即正负号,若想无符号,在创建表时加unsigned.指定 ...

  7. ORACLE环境变量定义.md

    export在linux的bash中可以理解为设置环境变量.设置后能够被当前的shell及子shell使用.这些变量的含义有一些有意义,可以查看相应的文档,我给你解释一些我知道的:ORACLE_HOM ...

  8. .NET Core 指南 官方

    https://docs.microsoft.com/zh-cn/dotnet/core/index

  9. vue 手指长按触发事件

    按钮 <span class="btn" @touchstart="gtouchstart()" @touchmove="gtouchmove( ...

  10. 模拟django配置环境进行数据增删改查,测试的时候有用

    import os if __name__ == '__main__': os.environ.setdefault('DJANGO_SETTINGS_MODULE','day76.settings' ...