在目标方法执行前后,进行代码增强 (阻止目标方法的执行 )

环绕通知实现任何通知效果。

案例如下:

案例结构:

aaarticlea/png;base64,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" alt="" />

第一步:编写代理类。

MyAspect.java

  1. //这里必须要抛异常
  2. public Object around( ProceedingJoinPoint proceedingJoinPoint) throws Throwable
  3. {
  4. System.out.print("环绕通知 方法前执行");
  5. Object result=proceedingJoinPoint.proceed();
  6. System.out.print("环绕通知 方法后执行");
  7. return result;
  8.  
  9. }

第二步:写ApplicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:tx="http://www.springframework.org/schema/tx"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  9. http://www.springframework.org/schema/aop
  10. http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
  11. http://www.springframework.org/schema/context
  12. http://www.springframework.org/schema/context/spring-context-2.5.xsd
  13. http://www.springframework.org/schema/tx
  14. http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
  15. <bean id="OrderService" class="cn.itcast.spring.c_aop.impl.OrderServiceimpl" />
  16.  
  17. <!-- AspectJ AOP -->
  18. <!-- 配置目标 -->
  19. <bean id="CustomerService" class="cn.itcast.spring.d_aspectj.CustomerService"></bean>
  20. <!-- 配置切面类 -->
  21. <bean id="MyAspect" class="cn.itcast.spring.d_aspectj.MyAspect"></bean>
  22. <aop:config>
  23. <!-- ref引用切面类 -->
  24. <aop:aspect ref="MyAspect">
  25.  
  26. <aop:pointcut expression="execution(* cn.itcast.spring.d_aspectj.CustomerService.*(..))" id="mypointcut2"/>
  27.  
  28. <aop:around method="around" pointcut-ref="mypointcut2"/>
  29.  
  30. </aop:aspect>
  31.  
  32. </aop:config>
  33.  
  34. </beans>

第三步 写Junit测试的代码:

  1. @Test
  2. public void testaround()
  3. {
  4.  
  5. customerService.delete();
  6.  
  7. }

第四步  输出结果:

  1. 环绕通知 方法前执行
  2. this is delete
  3. 环绕通知 方法后执行

14Spring_AOP编程(AspectJ)_环绕通知的更多相关文章

  1. 12Spring_AOP编程(AspectJ)_前置通知

    接下里的博客会一篇一篇的讲解每一个通知.其实AOP_AspectJ的编程与传统的AOP的编程的最大的区别就是写一个Aspect 支持多个Advice和多个PointCut .而且我们写AOP_Aspc ...

  2. 16Spring_AOP编程(AspectJ)_最终通知

  3. 13Spring_AOP编程(AspectJ)_后置通知

    后置通知和前置通知差不多.最大的特点是因为后置通知是运行在目标方法之后的,所以他可以拿到目标方法的运行的结果. 给出案例: 案例结构图:

  4. 15Spring_AOP编程(AspectJ)_抛出通知

  5. 11Spring_AOP编程(AspectJ)_概述

    AspectJ 是一个框架 (第三方AOP框架 ),提供切面编程 ,编写一个Aspect 支持多个Advice和多个PointCut .对比前一种提到的传统的Aop编程,AspctJ更加的常用.Asp ...

  6. 19Spring_AOP编程(AspectJ)_使用@Pointcut注解来定义切点

    我们之前的方式是采用 @AfterReturning(value="execution(* com.guigu.shen.anotion.UserDaoImpl.*(..))",r ...

  7. spring框架应用系列四:切面编程(环绕通知与前后置通知区别)

    切面编程(环绕通知与前后置通知区别) 本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7867034.html 解决问 ...

  8. AOP 环绕通知 (Schema-base方式) 和 AspectJ方式在通知中获取切点的参数

    环绕通知(Schema- base方式) 1.把前置通知和后置通知都写到一个通知中,组成了环绕通知 2.实现步骤: 2.1 新建一个类实现 MethodInterceptor 接口 public cl ...

  9. 18Spring_AOP编程(AspectJ)_AspectJ的各种通知总结

    小结: 前置通知(权限控制). 后置通知 ---- 不怎么用 环绕通知(权限控制. 性能监控. 缓存技术 ) 异常通知 (发生异常后, 记录错误日志 ) 最终通知 (释放资源 ) 环绕通知 是取代任何 ...

随机推荐

  1. SharePoint通过stsadm备份和还原子网站(不是网站集)

    大家都知道SharePoint的stsadm命令提供了很多便捷甚至是唯一的操作方法! 这里列出的所有命令:http://www.cnblogs.com/dadongzuo/archive/2013/0 ...

  2. MySql中时间类型总结

    最近建表要用到时间类型的数据,但对时间类型的数据一向不了解,就总结了一下.. 一.日期DATE 一个日期.支持的范围是“1000-01-01”以“9999-12-31”.MySQL显示日期用 “YYY ...

  3. 【读书笔记】iOS-Xcode-查找特殊字符的方法

    如图所示,为搜索图框,然后,点击放大镜图标------->Insert Pattern---->即可看到特殊字符----->选择特殊字符进行插入. 参考资料:<iOS开发进阶& ...

  4. 【转】IOS开发中图片资源使用png还是jpg格式

    对于iOS本地应用程序来说最简单的答案就是始终使用PNG,除非你有非常非常好的理由不用它. 当iOS应用构建的时候,Xcode会通过一种方式优化.png文件而不会优化其它文件格式.它优化得相当的好 他 ...

  5. iOS 清理缓存功能的实现第二种方法

    /** * 清理缓存第二种方法 * * @param sender <#sender description#> */ - (void)clearCache:(id)sender { // ...

  6. iOS之UI--关于modal

    modal的效果展示: 关于modal的涉及到的知识点: 1.当一个控制器被销毁的时候,它里面所有子控制器的业务逻辑都不能够处理 2.当一个控制器被销毁的时候,它里面所有子控件的业务逻辑都不能够处理 ...

  7. myeclipse2013 安装 egit

    myeclipse2013版本: Version: 2013 Build id: 11.0-20130401     手工安装不了,那就到市场上安装.     1.Help--->Install ...

  8. linux命令之 用户和群组

    一.保存用户信息的文件 1 /etc/passwd root:x:::root:/root:/bin/bash pwftp:x::::/alidata/www/wwwroot/:/sbin/nolog ...

  9. java网络---查找Internet

    连接到Internet的设备称为节点,计算机节点称为host. 为了区别每一台连接互联网的计算机,就有了Internet Protocol地址的概念. IPV4 & IPV6 我们以前默认的是 ...

  10. Windows Form小技巧

    如果需要将两个控件在窗体上使用Dock来进行布局时,会出现Dock.Fill不会占据Dock.Bottom之外空间的情况,这时可以设置Dock.Fill的控件BringToFront, 这样使得控件最 ...