14Spring_AOP编程(AspectJ)_环绕通知
在目标方法执行前后,进行代码增强 (阻止目标方法的执行 )
环绕通知实现任何通知效果。
案例如下:
案例结构:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAASsAAAB1CAIAAACZNVDQAAAR00lEQVR4nO2dW4wb1RnHh4eKl0p9oBKPqFQFQlSpCbFZ3BAopSUqVVMVgRIJNptEsgIRIil3SEp3sxdnE+i0FBIEhIRLcJItpFA5RDSNeEhJopBV0iAkW7shuwvZ9a4Xry9rj73S9GFu5zoz3vV4ztjfTyNl58x3LnbO3+fMsc9/JFUATnQt+ey5n5rHy/dfh56e6FrS0Nak5IgUkVMNrdMt9W1bIirKCxX5PfcYye8GqKqqfvb04tSJvd+c3v/N6f3nDu/cu3k1evrZ04t9aldKjkjRhAiFeIPPChT4nWkgnivwxIkTsVjMIebJm785vV+Z+TRz/sBXn+zeu3k1enriyZu9biQHUKCnCPzONBBvFXj8+PHFixffcMMN9mGfbrn5m9P7M+cPZM4f+OrYHk2B5umnW/gKTMfj2x4+m3ZsSCIq6UTklN715CiSgqB3DCuLEUEUokXqmD0JT6MLYYaZtVrxRoFIekROWZ2W9xLMEiKyzBQY0iTGi+e2r5Y2s94rMlHG3pkWFqOHCtTkt3r1akcFHn30pnOHd371ye6vju35fF/Xs6vuRE+PPnqTbe7Rs3+/55Vt97yyrX+IHZCIkj0tEcV6ES0OtIfxCknJUeM8EdWLY/QkVufihElYbVYbSD1yX4KVTc9ICgwNYLykebw0VpvRsdXMxnoDzRJBgXXHlN+aNWvsFbhl+bUv33/d3s2rtePZVXc+u+rO+VSZjse33XPsSyqdMdciuogLBXImbNSwoH3Mo6HMzuUYZp7i6cQYSLwEopF0mx0DFvTSjFN8lNXzMOoCBaqqRwpE5eeoQFVVP9jwE3TpRVPgNdu/lK56UbrqxWu206pCcRoDPVIgOsaQHUjrvdpFm85lE+arAuf50hAF0sWCAjl4osBYLHYDQm9vr338wY4fEysxqqqa2pOuepGb09V9IDr1SshkVzW6rzmX489CsUKQMlJyxJyqyeR8kehnehXMMHwGSbfBSYG8WWgN01SVKNvxpbHaTMx16UTtfwEUqKqCfBvx3oPXEysx5iXph69//7FzC63AmlHxuy9DgUY+qx+T6xD6LCsaRQdLxlqKtd5AreqgfTBKL2rUpECsUdZKDHqvS6yG8O4DXb00XpvZCznUG0i8M6BA/3h7zfXo0oupQBdT0KbBgz7o+ZcN9WszKNBfTm5fum/Nj8zj5fuv87tFjade3z26WOkkIVdOXDejbrpp4Z/EiKFAgi3Lr9X+kK56Ubp2v7+NaRR16s3I9M/7Ll2PNuvyb9EBUBVTgQDQOoACAcBPQIEA4CegQADwE1AgAPgJKBAA/CTYCvyo/2fMw+92AYBbgq3AD2NLlMoccVz86GEQIcm8v/Nu5S/LG0KwFTjQt5RWYPL41i9diRD5LYi4Xwgz97/WDihQVIRT4MmTJwuFgsvgeO8tJWVOOz6/nLlp/aub5H9/feovyeNbL3608WDPLdycyAZX7bSWXtawXzESWxnE/ZwA5o1wCjxw4EA8Hp+amnIT/O72ZcVStViqzparpgKL5epsuVosV9/rXsbJh22fqZ1GKZDaugg0HyIqMJ1Ov/7662NjY47Bb3WF8rPV/Gw1N2spMF+s5ovV/Gx1X1eInc1uZyrtB+Fo/YL+shn9YXRETug50Z3jHN+UFFKr4QrD/aSwzxiNRrCdS9T2Hzo709aF+Z6grxOboVonzK1JAAcRFaiq6tTUlCzLyWTSPviNF0LZfDWbr2QLlgKzhUo2X/2uUH3jhTA7W00KdLB+wbcgYF4pxgWte5MbbplmKrjzisr84bKLjFaIEYAbzFCuOXSB9GtlmcfQFTHDAD6CKlBV1StXrnR2dk5PT9sE795261SukpmpTOUUTYGu6qhtDLT1RyGLMi+hF1h/M81UOPNbfVBBm+OQ0aiF/hxhWlcwCmS9J2zzGEb9MAq6R1AFZjIZN2Pg355vm/hOmfhOmchaCnRhMGPju8SYhZrnDH8UhgLNgc9JgYwm2NxhGgOKu4xalHUjaa9Am7tNfJSlzWNYFfE8ZgAGIipwcnLS5X3gS0/f9u10+fPLmUf2nXxk30lNgW4MZkiPFG0tFLmvcWv9Qs9CrZtDWwWyzVSooQRdrnWfUUuIRKOYewXPr4VVIO3ZwTSPoSvihQEcRFSg+7XQ2FM/H50sf345s+KP72s3geYlZ4MZ1gKKOX1ya/3CK8hZgcy5GnvkJedzLjKS/Z+9oMJbYmG65rDNYyih8cIANsIpsKbvA3seX355onw5XT56YezohbHL6bKW3koGMx4DM0mPEU6BNdG5Zfml8dLwePnSeOnSePnSeMnvFjUb8JMYrwm2Al/YfPvzj63YunnF1s0rnt+8YuvmFVp6KxnMeEbLO7g0hmArEACCDigQAPwEFAgAfgIKBAA/AQUCgJ+AAgHAT4KtQPCJAYJOsBXYQj4x8NV4kxJsBc7XJwbd6ICCbOqzz9v4r6lBgU2KcApsiE9MSo5IkQhpAYH/3pqfNRLx+KeS8FvMFkI4BTbEJyYlR6SoTO9DsHmsLBqUSkQ9VQgosIUQUYGe+8QYXRzbm6qd6En4nA/zYmDsr6U29yCuLeRvK5mOLMSjpVmb1cGvpUkRUYGq1z4xZne29qYiKdQed2vEY27A5RjJYK4tdt4wtHELawwEv5YmRVAFqp76xOC73XVTMlJ4aBLDkgJXqM2ApeKCx8CqZjSPmwZ+LU2DoAr02CeG9DmROWMbbvNHCciNkQxaHdORpVYFgl9LcyGiAr33iSGNXlg+fywHFNIMSTcCZBrJ4HdttEeLafFCG7cgzQO/lmZHRAV67xODDQrYCT4iobdo9M0UehdGu6xEo6yFGOa8kDJusb4XAb+WZkc4BQrlE2Nv5MfHg2kfzCSbFOEUWBPe+sTMv9PXXy7wk5hmJdgK9M4nBr87rJW6KhD8WpqaYCsQAIIOKBAA/AQUCAB+EjwFzszMjIyMJAHXjIyMzMzM+P3/BrAJmAIzmczo6GixWKxW5+BweRSLxdHR0Uwm4/f/HsAgYAocHhpSyoqiVBSgBipKWRkeGvL7fw9gEDAFJpPJarVaVhTt4PnEmAFwaEe1Wk06/cgW8IVAKrBUKmuHjU+MGRP44+KuNqlt58UFFQIKFJbgKbBSqcyWStph7xNjhhHHkQ3kHgdpwxFesIvjYn/bAksozV7c2Wa0Zf0R+lJb/8UFFF4qVSoVUKCYCKdA+9+FJpNJRakUi7Pa4egTY0ayjiPrpfUf2gUwj//1t0nrP0RSLvS3tbW1zacopCVt/RfM0hZUFPtQFFCgoAinQPu9EclkUlGUgoGjT0zBjg/WS+s/sI1gcWFHGMt2YUc4vOPC/MrilB/ecaEuRVkoigIKFBMRFWjjE5NMJstlJZfLa4ejT4wZyTo+WCetGyBTdMKx81riYCxspK0bQAKk8I7BXD6XOx8Lh2OD+dzAOiOFLEqyajkfC0vrBqxL6wZctGpwR9hMGdwRxvKej4XxpmptIMPy5TIoUFBEVKDK94lJJpOlUmnGwNEnZsaOgQ6pYwA7DfcNan8P9oWljgHrXwQ8ycqEZh/okKyTmYEOSc8x2BeWJDO3lc5uBFXhYF8HWkPHAJbBjGOElUolUKCYCKpAleMToykwa+DGJybL5XCH1HEYPcMJ950zUsN958y4c31hK9vhDuua9TeaimXB8lKn2cMdEnbOijrXZw5vWqJRmW0YKFBYBFUgzycmmUwWi7OZzLR2uPGJMYOp49Baae1B8/TgWinUe5Yd+UVPSJKkUM9Z/e+1B80SCNYeZBT1RU+IzkueHlwrSWsPMWo/2xvSij3bG5KkUM8XWGJm+uBaKdTzxdmeEHKJDCsWZ0GBYiKiAm18YpLJZKFQmDJw4xMzxSXeLrXHsVPrPN7eHp+amjrT3a2nnOkOSXpSyAjDcqDn8XZJCnWfsZL1kzPdISsHcnKmO4TEW5dD3WeQCq1yqIJC7e0h4xorrFAogALFREQF2q+FFgqFSQM3PjGTXOLtUnscTTjdHTLGMvNCvJ1M0qNC3d3tElFA3Eqx8iFBp7tDUns7VSIaqxV9Wos1/9AirfaF2ttDeLFISxhhoEBhEU6Bjt8H5vP5CQM3PjETAnFq+zLpofcbkYkgn8+DAsVEOAXak0wmc7ncuIEbn5hxgTjVtUx66EDteZZ1nVpYxblcDhQoJoFU4LffXtEONz4xZrAAx387l0kPvus6/t0HJUmSpAffXXDVoEBhCZgCh4eHs9lsOp3+lgOdhRfZOqTT6Ww2Ozw83Pj/L8CRgCkwk8mMjoxks1nbr9oBjGw2OzoyAjt0xSRgClRVNZPJDA8Nee/t0DwMDw2B/IQleAoEgGYCFAgAfuK/Ag/tuq+nY2m8c43fDQEAH/BZgf2rb0m9/cjXHz/e+dCSQ7vu+5d8O3r42zYAaAB+KvDNJ9b855nVx/s3dD60ZOzDR3s6lhJ2Lw0RofGI3IU8G6VFn6tiPV0YmDd+KvDJ39/61oY/bFx+4/ixVR+vu/fQrvtou5d/vrTC41b4rkDk0bwB68+gwDrgpwJjD9y2cfmNpzrvePWBX21cfmNZmSsrcyWlWlbmSsqcaffyj113eNmKeXejejwgKRHFdJeI1q7jeTSjXo92AgXWAZ/vA5/55TU9HUsP7bqvWK4Wy9VFKzdt6nytWJrb1PnaopWbiuW52fJcfOcvvGyCjwqkH8vbmGaAAgXC/7VQVVXfid2Vn63mZyu9ew4vWrkpN1tdtHJT757DmgfMO7G7uDkZD4XWuhf1YGluOjoLRR9mraMPSmRFyNRRf9Y0Iy/20HgpIstRrEy7J/S6LARvBqvl6LOtE1EJfbg2WjsVltCrS+gvXE/A8oEC64AQCnyz5+5soZotVLOFiqa9RSs3ZQsVLWVvz92cfCk5avQhazjRtILoyyGdViD69HiHitDnxjPyYrWg+Qz5sBVYSyHYJwdaItamiJxCLrLHQCosETXVhj7QFCsYFLhQhFDg7q5fZ3IV7dDk5z4vNQoS3cs85aVTCuQIw64ibl7mhZQcsVVgTYWgzUAHTnKwQoc83iyUCEOrY/4NCqwDQijwr39emc4q2qGNgSpl98IgJUck+mPdAwU6VmSnQLOz0uLhSLC2QnAF8gdVUKCYCKHAXdt+c2VauTKtaAPglemyStm9MEB6BXIbg97RuElnz0LNeZ2MTczIAp1noYx7PlM8mLS1KPPuznUhxCwUvWvEhIl8Y0K0HCudSqDea1BgXRFCgX3P3Ts2VR7LlLW10LEpxbxk2r2wsCaGkWgUG5qs5Qazi/DSWSsxVsHoPSRRkZHqfiWGUiA3vJZCrGZgLaU/EqxPD7zl+t0fFQYKbARCKLDrmd9eTpcvT5ZGJssjk+WRtG42YTcF5cKbYtVrCR4A6okQCvzTU7/7eqJ0aaL0tXEsoDBQIBAkhFDg80+sIg4tHbV7cQ0oEAgSQigQAFoWUCAA+AkoEAD8BBQIAH4CCgQAPwEFAoCfgAIBwE/8V6AkSd+7+mr7Q5KY7azrr6KE9XoRtmFAPRBCgT94OG5/eKVActODkB1d2IYB9aCVFZiSI5GIoL0bfsHTKgihQDewsi5IgdrmAjunCD8BBbYKQihwvjGoAtmbfJD0iCzb7lNn9HkXljOUOwu5H4qRHYtHNx4aZUbMHUY2W5+w/baMFw4EA1EUaA50zNHPSYF2xirYnj9KbY4KdLac4dZu40xDb1cnyuRt/6UywmAZcERR4LwwFMgzViHSjVO2txF3DKRP8XSurQsnO9vNhVcXboHByEhYSwABQxQFEmOg6sYnxk6BLCsk/RSZtaEzx3oqkPaPULmfCw51OVtImUGgwyAiigIZ6Y4+MTazUOT2jDULxYogx0Br9d/Ocoa4qWPVbuNMQ7u5uFAgM2NKlhNUFiA4iKJAegzUr9r5xLhYiUEcXrCVGKQIewVyLWcSRDF07bzszMUTsky2CQ1r1YW51AMEBVEUyL40H58YPvbfPDjPQmsFBiXAGSEUSPwAbQFrMwQpOcJZsWSFUpdBgYDn+K9AG+blE4ODTNu48tOncbRYQIGA5witQABoekCBAOAnoEAA8BNQIAD4CSgQAPzk/1mhXh80lFn1AAAAAElFTkSuQmCC" 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的各种通知总结
小结: 前置通知(权限控制). 后置通知 ---- 不怎么用 环绕通知(权限控制. 性能监控. 缓存技术 ) 异常通知 (发生异常后, 记录错误日志 ) 最终通知 (释放资源 ) 环绕通知 是取代任何 ...
随机推荐
- 快速生成PDF书签
PDF没有书签,就像吃饭没有筷子一样,虽然可以将就,但总不是很方便!现介绍一种快速生成书签的方法. 第一步,打开excel,制作书签目录,前面的一列是书签名称(黑色框),后面一列是PDF页码(红色框) ...
- oracle pfile spfile
1.参数文件的定义.作用 oracle数据库通过一系列参数来对数据库进行配置.这些参数是以键-值对的形式来表 示的,如:MAXLOGFILES=50BACKGROUND_DUMP_DEST=C:DUM ...
- Android 身份证号码查询、手机号码查询、天气查询
1.基本信息 身份证号码查询:http://apistore.baidu.com/apiworks/servicedetail/113.html 手机号码:http://apistore.baidu. ...
- 卸载openfire
首先,确保你已经关掉了openfire打开终端 (在应用程序-->实用工具-->)输入以下命令sudo rm -rf /Library/PreferencePanes/Openfire.p ...
- 明明已经执行Log.i,偏偏打不出日志
Android内打日志用的当然是Log.i(tag,string),调试时的日志输出可以很快的反映一些问题,方便我们跟进. 但是如果连日志都打不出来了怎么办呢,我今天就遇到了比较坑的问题.项目里别的日 ...
- 小波说雨燕 第三季 构建 swift UI 之 UI组件集-视图集(六)Picker View视图 学习笔记
想对PickerView进行操作,只能在代码中操作. 下面 ,再添加三个label组件,然后将所有组件配置到代码中(看代码),然后要实现对PickerView的操作,就要实现它的DataSource协 ...
- 关于ajax请求数据后,数据本身的js失效的一些想法
今天遇到一个头疼的问题.我做一个左右翻页效果(客户要求能够无限翻页),所以只能动态请求数据,进行局部刷新操作. 这时候问题就出来了,当我请求翻页的时候,数据通过js填充到div里面,但这些数据,自身带 ...
- centos到底下载哪个版本?
CentOS-7.0-1406-x86_64-DVD.iso 标准安装版,一般下载这个就可以了CentOS-7.0-1406-x86_64-NetInstall.iso ...
- Android平台二维码之生成,扫描 & 识别
1.二维码的前世今生 “二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利 ...
- Chrome 控制台 console
前言 Chrome浏览器我想是每一个前端er必用工具之一吧,一部分原因是它速度快,体积不大,支持的新特性也比其它浏览器多,还有一部分我想就是因为它的控制台功能强大了吧,说它是神器一点也不过分,很方便. ...