14Spring_AOP编程(AspectJ)_环绕通知
在目标方法执行前后,进行代码增强 (阻止目标方法的执行 )
环绕通知实现任何通知效果。
案例如下:
案例结构:
aaarticlea/png;base64,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" alt="" />
第一步:编写代理类。
MyAspect.java
- //这里必须要抛异常
- public Object around( ProceedingJoinPoint proceedingJoinPoint) throws Throwable
- {
- System.out.print("环绕通知 方法前执行");
- Object result=proceedingJoinPoint.proceed();
- System.out.print("环绕通知 方法后执行");
- return result;
- }
第二步:写ApplicationContext.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-2.5.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">
- <bean id="OrderService" class="cn.itcast.spring.c_aop.impl.OrderServiceimpl" />
- <!-- AspectJ AOP -->
- <!-- 配置目标 -->
- <bean id="CustomerService" class="cn.itcast.spring.d_aspectj.CustomerService"></bean>
- <!-- 配置切面类 -->
- <bean id="MyAspect" class="cn.itcast.spring.d_aspectj.MyAspect"></bean>
- <aop:config>
- <!-- ref引用切面类 -->
- <aop:aspect ref="MyAspect">
- <aop:pointcut expression="execution(* cn.itcast.spring.d_aspectj.CustomerService.*(..))" id="mypointcut2"/>
- <aop:around method="around" pointcut-ref="mypointcut2"/>
- </aop:aspect>
- </aop:config>
- </beans>
第三步 写Junit测试的代码:
- @Test
- public void testaround()
- {
- customerService.delete();
- }
第四步 输出结果:
- 环绕通知 方法前执行
- this is delete
- 环绕通知 方法后执行
14Spring_AOP编程(AspectJ)_环绕通知的更多相关文章
- 12Spring_AOP编程(AspectJ)_前置通知
接下里的博客会一篇一篇的讲解每一个通知.其实AOP_AspectJ的编程与传统的AOP的编程的最大的区别就是写一个Aspect 支持多个Advice和多个PointCut .而且我们写AOP_Aspc ...
- 16Spring_AOP编程(AspectJ)_最终通知
- 13Spring_AOP编程(AspectJ)_后置通知
后置通知和前置通知差不多.最大的特点是因为后置通知是运行在目标方法之后的,所以他可以拿到目标方法的运行的结果. 给出案例: 案例结构图:
- 15Spring_AOP编程(AspectJ)_抛出通知
- 11Spring_AOP编程(AspectJ)_概述
AspectJ 是一个框架 (第三方AOP框架 ),提供切面编程 ,编写一个Aspect 支持多个Advice和多个PointCut .对比前一种提到的传统的Aop编程,AspctJ更加的常用.Asp ...
- 19Spring_AOP编程(AspectJ)_使用@Pointcut注解来定义切点
我们之前的方式是采用 @AfterReturning(value="execution(* com.guigu.shen.anotion.UserDaoImpl.*(..))",r ...
- spring框架应用系列四:切面编程(环绕通知与前后置通知区别)
切面编程(环绕通知与前后置通知区别) 本文系作者原创,转载请注明出处:http://www.cnblogs.com/further-further-further/p/7867034.html 解决问 ...
- AOP 环绕通知 (Schema-base方式) 和 AspectJ方式在通知中获取切点的参数
环绕通知(Schema- base方式) 1.把前置通知和后置通知都写到一个通知中,组成了环绕通知 2.实现步骤: 2.1 新建一个类实现 MethodInterceptor 接口 public cl ...
- 18Spring_AOP编程(AspectJ)_AspectJ的各种通知总结
小结: 前置通知(权限控制). 后置通知 ---- 不怎么用 环绕通知(权限控制. 性能监控. 缓存技术 ) 异常通知 (发生异常后, 记录错误日志 ) 最终通知 (释放资源 ) 环绕通知 是取代任何 ...
随机推荐
- SharePoint通过stsadm备份和还原子网站(不是网站集)
大家都知道SharePoint的stsadm命令提供了很多便捷甚至是唯一的操作方法! 这里列出的所有命令:http://www.cnblogs.com/dadongzuo/archive/2013/0 ...
- MySql中时间类型总结
最近建表要用到时间类型的数据,但对时间类型的数据一向不了解,就总结了一下.. 一.日期DATE 一个日期.支持的范围是“1000-01-01”以“9999-12-31”.MySQL显示日期用 “YYY ...
- 【读书笔记】iOS-Xcode-查找特殊字符的方法
如图所示,为搜索图框,然后,点击放大镜图标------->Insert Pattern---->即可看到特殊字符----->选择特殊字符进行插入. 参考资料:<iOS开发进阶& ...
- 【转】IOS开发中图片资源使用png还是jpg格式
对于iOS本地应用程序来说最简单的答案就是始终使用PNG,除非你有非常非常好的理由不用它. 当iOS应用构建的时候,Xcode会通过一种方式优化.png文件而不会优化其它文件格式.它优化得相当的好 他 ...
- iOS 清理缓存功能的实现第二种方法
/** * 清理缓存第二种方法 * * @param sender <#sender description#> */ - (void)clearCache:(id)sender { // ...
- iOS之UI--关于modal
modal的效果展示: 关于modal的涉及到的知识点: 1.当一个控制器被销毁的时候,它里面所有子控制器的业务逻辑都不能够处理 2.当一个控制器被销毁的时候,它里面所有子控件的业务逻辑都不能够处理 ...
- myeclipse2013 安装 egit
myeclipse2013版本: Version: 2013 Build id: 11.0-20130401 手工安装不了,那就到市场上安装. 1.Help--->Install ...
- linux命令之 用户和群组
一.保存用户信息的文件 1 /etc/passwd root:x:::root:/root:/bin/bash pwftp:x::::/alidata/www/wwwroot/:/sbin/nolog ...
- java网络---查找Internet
连接到Internet的设备称为节点,计算机节点称为host. 为了区别每一台连接互联网的计算机,就有了Internet Protocol地址的概念. IPV4 & IPV6 我们以前默认的是 ...
- Windows Form小技巧
如果需要将两个控件在窗体上使用Dock来进行布局时,会出现Dock.Fill不会占据Dock.Bottom之外空间的情况,这时可以设置Dock.Fill的控件BringToFront, 这样使得控件最 ...