后置通知和前置通知差不多。最大的特点是因为后置通知是运行在目标方法之后的,所以他可以拿到目标方法的运行的结果。

给出案例:

案例结构图:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAARYAAAB9CAIAAADoa9s1AAASe0lEQVR4nO2dW2wU1xnHTx6qvlTqQyrlMWqrJiGoVW1s2k4pTa9BbVWqpgGcxpQ00igJigptc+FiiM3iWISk0yYpuQAxuYBr3JYGMgRRQpFKMbk4hSYNYmSMiQF77TWLr7te0+nDzM6c68ysZ8dzxv5++h52zn7nMrvnv+fM7JzvIHPauXii+V+bv4TbxRPN098MACgLKO4GAECyAQkBQChAQgAQCpAQAIQCJAQAoQAJAUAoJJLQ6gU3xFm9oSlI0Yw4myCkvG3TVVlOVObPPDBxSuhoQ8WxtV907Ok7b8QPjzZUTGtrZP46QUISE6eEjj0y1zi68+LJXRdP7urY+8TOVcvww2OPzI2pXYamIFWXoZBoiFlCEn8yUyIqCR09erSpqcnH56FbL57clb96OHNq90dvbtu5ahl+ePShWyNqmx8goUiR+JOZEpFI6MiRI3Pnzr3pppu83Q6vvvXiyV2ZU7szp3Z/dOg5S0LO4eHVYgmlW1rq7n837dsQXUU2imbYfUdTsRQM+5t1sxQ9qEIsTxunK5BpbCFcN6dW179YIJauaIbb60Sn4JSgaBpXIViTOCcvbF8pbeZ9VnSiRnwyM0JN5ZeQpZ9ly5b5Sujgg7d07H3ioze3fXTouRPNDWsW34YfHnzwFs/cH7/7zO3P1t3+bN2WTr6DrtJdRVeJbsD2bryLiAoxNLV4rKt2cZyuwOsdAjdE1Oa2gRaU8BTcbHZGWiG4A+eUpnBqvDbjo5uTjfcBOiWChFgc/dTU1HhLaPWCG56+88adq5ZZtmbxbWsW3zaVKtMtLXW3H/qQSedMV6jvOICEBHMe5ofZ+qHFXbm9w9fNOSTTqVGIOgWqkWybfR1CnVrxkBzn7DycukBCYnD9+ErINM2/3PsF/P6BJaHrN32IrnsSXffk9ZtYWeD4jUIRSQj/lad7gNX9rDc9eoeHW6wSmuKpYRJiiwUJlURTU9NNGI2Njd7+f1rxeep2gmmajnjQdU8Kcwa6FsJnL7pG97Vi/3OmQ+KJHFEIVoahKc5sR6OnXFRHsavgupGTMLYNfhISTeRKmOmZVNm+p8ZrMzVdZBOtbwEkVD5eu/tz1O0Et1mfefFTv+oIW4E7KRH3P46EivncjkhfTNsTFVXFhyvODQH3opm5NYF3IpW9Mi9JQkSj3NsJ+PUedUkvuhYKdGqiNvPvRjAfIPXJgIRC8HLN5/D7B46EAsziZgwRdKLI71mXr80goZAc31TZXPNZx56+88YYGxMT5foPKsD9Nhr68j9wM8rW8WfEwwlSPiOHrnsS3bAr3sZMF2XqjtgMKvo+WY422/pN/BBkSiUhAEgiICEACAVICABCARICgFCAhAAgFCAhAAhFIiX0+pYvcy3udgGzkURK6K9NFfmJSco+eP1+UBHNlP+8nBn/ek4LiZRQ2+OVrITOHln/YSAVYf/Ky/vPHndBW+mAhKJHFgkdP358ZGQkoHNL47zx/KRlJ7ozt/zyjyu1v59v/93ZI+s/eP2+P22eJ8yJrVizDkvpJtP2RBf1YLW8QgdMeSS0e/fulpaWgYGBIM6vbqoaHS+MjhfGcgVHQqO5wliuMJorvJaqEuQjnsYvnemSELOUCZAZiSSUTqdffPHFnp4eX+eXGqqHxwrDY4WhMVdCw6OF4dHC8FihuaGan81rqRm7xNo3HAL+mCb+lKei6XZOfC2nIJaAgdVajJQglLp3RlVViIUQzGoCNjs31AH3M8HPk5jkuQfclQ6zAIkkZJrmwMCApmlnz571dt6+sTo7XMgOT2RHXAllRyayw4UrI4XtG+fzs5UkIZ9wCOQD0UT8gOIbVv+kV9BxAwyQ0QhM7lOYATK6LkUHMugCE0mCLZA9V15ABbYirtvsQC4JmaZ5+fLl+vr6wcFBD+dtdV8ZGJrIXJ0YGMpbEgpUR2mjkGfMALoo5y38Dd5rboABwRTR/lnHm+OTsVgL+0PAXQ3OKZD3mfADKnDqn53jkFwSymQyQUahP6z7at+VfN+VfF/WlVCAoAsewUQ4EznnmBMzgCMhZ+jxkxCnCR5XWcWf9GAZLS/3YspbQh5XXOQ4xwZU4FUkirsww5FIQv39/QGvhZ565GuXBnMnujMPNB9/oPm4JaEgQRfouAHWHTlsbh80HAI7kXMvkDwlxA8wwPyY4zcNg2e0EhRVJRaEi2IY8Apkl8FzAyqwFYncZgESSSj4Hbmmh7/+cX/uRHdm4a/3WBdCzlv+QRd4dwGcGUjQcAiigvwlxJ3u8Mc+ekoUICPdgfl3BUT3CbiRJPgBFRiliNxmPrJIqKT/hTb/ZkF3X647nTt4uufg6Z7udM5Kn01BFyJmlk3GwiCLhEqifvWCrt7xc725rt7xrt5cV+943C2aacDDCcFJpIQ2rvrGul8tXL9q4fpVC9etWrh+1UIrfTYFXYiMGRTVYHpIpIQAQB5AQgAQCpAQAIQCJAQAoQAJAUAoQEIAEIpESghiJwDykEgJzaLYCfAfp/QkUkJTjZ2AP3aNgy3y8c47/f83goSkRxYJTUvsBENTkKLQq6rJh0fFWRUl4sfG4Lm0RCKLhKYldoKhKUjV2KeiPTZ+w50MXY20i4OEEolEEoo8dkKxjxKLzawDO4mcNhHLmzkL5pi1AlgkA/o5M26UAmr3Rt7yUYhhID0SSciMOnaC0x/dxWZYCrPq1B1zuCvqBMEViEgGXvES2GAGvFEIYhhIj1wSMiONnUCuP1Xw7bs5IuEpiJaYx5BhkoolIKrmNE+YBjEMJEQuCUUcO4Fe+68JRhcyehSjgCDBFfDquFEKSpUQxDCQFYkkFH3sBDr4AS98FC8qAB3hw44vxQ2uQF65sHELnLAHbDADrHkQwyA5SCSh6GMnED/LxAE5JuCXKewFBX4lwkYeUFXe3QTu1IoJZuDeXocYBslBFglJFTvBOz6UmAhmTjAZkx5ZJFQS0cZOmHqvLX9/h4cT5CeREooudgJ5hVQqZZUQxDBICImUEADIA0gIAEIBEgKAUCRDQpPX/nfkdOaZg92ptk6wgPbMwe4jpzOT1/4X97c3w0mGhA68m36jY6BnsDCUM8ECWs9g4Y2OgQPvpuP+9mY4yZDQln3nMqPXMmPmwChYUMuMmZnRa1v2nYv725vhJENCqbbOqzmzf8Q2UewExwHMsqs5M9XWGfe3N8NJjISy42bfsG0esRMcn8TbKa0KKZtOhSokOw4SipzESOjKuNk7ZJt37ATHjbLd99BPXKN7dJFzADMa5ocswex9X6sqtqW2jX1LaXg/ROFD5hWQUPTIIiHvZ+RSbZ2DY+alIdt8Yyc4njzT70bqq14OXDPq56O727CU97Wq+UrVVIrCWjJfO+6UFqoovg2OgYQiRxYJeT+pnWrrzIyaPVnbfGMnOJ4803+O1Fe8HLhmPDYf/Xyvm/LPx5V5jxuvrCASQ5jx2HzlsY6yFOVaZhQkFDkSScgjdkKqrbN/xOy+Yptv7ATHk2f6XUhtplNs5jUaVuKxRnd1QjPmgKq1Y1fM7ivGxmplY4fZ3aoWU+iikFuLsbEa3dXqvnVXa4BWdWjznJQObR6R19hYTTbVagPtZvaPgIQiRyIJmeLYCam2zr5hs2vQNt/YCY4nz/QapL5EHCob3rNeGxuqUU2r2fWeVkn4YG9Zh60qqtb+QWfXaxCqbDRcH7sQY0M1Qk6BbrprL/0Cy2iZ2wZjwy+surC8bgOchnHc+oZBQpEjl4RMQeyEVFtn77DZOWBbkNgJjjNjeg1SdziHLfSy7sqU0Tmg1yCEkFL3tpPLqKtGNS324Y7llhv5ukVF1dpbA2wWIi9zaO5YjtBynW7n21ol1s63Uu6ouMM+C6XubR+3XpBQ9MglIVHshFRb56Wr5tl+24LETnCcGdOXInW7c9iiomrtMN/TWFeNEFLWnbRfL21xSqBQt3OKMtZVs3npw+3LEVquc2o/qVVYxZ7UKhCqSBlEYr+5fTmqSBmHUwr2Fu126SpIKHIkkpBH7IRUW2dP1jzTZ1uQ2AmOM2P6UqS+QByipXvswxdq1Rf6zDPt2lo7xVhbZb3rvDDP7FERvwR9KUIVmww7fY+KqrRDxUJQrW6lH9qkFLMba6swf8vatQqkrG23XqgvEOXgec0z7VpFlbq0SlnbTlXnuvVkQUKRI5GEvO/IfZw1/9tnW5DYCY4zY/oSpD6Pp7RrFcXRZMkeO/H5Wuf/Gt1KeXOTghBCVdqaWjfRdbZT9CXY0FSsxVhThZbUqnT6HmoOqaxptxrjvLA8jTXFP48qatUKslisJRy3j0FC0SOLhHz/F7owaH5w2bYgsRMcZwnMeKQK3flaibn+pX0ZqdvCVX1hECQUObJIyJtUW+f5QfP0JduCxE5wnCUw4+Eq9LNXS8t1oF5BVdqBcFWfBwlFT2Ik1DVonrpkW5DYCY6zBGZLKKj/q3bUhGdDV90FEoqeZEjoqf3nz/RO/ueS+e+LfGMRec4e+88l80zv5FP7z0/71zW7SIaEDnb073snY6Svef5nCkaYkb62753MG+/BkrtoSYaE8oVr+99Jb9l3LvbV1AmyLfvO7X8nnS9ci/vbm+EkQ0IAIC0gIQAIRWwSat16x+YVlS31NXE1AADKQjwS2rJsnvHyA+f3/6a+tqJ16x0HtG/gFkuTAGBqxCChHb+teevRZUe23FtfW9Hz1wc3r6ikQiBMi4qKm9iFCfw+S4PGR7xrc9KIQUIP/eQrL9370/sW3Nx7aPH+e37YuvUONgTC355aGHErYpcQtnlewjokSIggBgk1LfnafQtubq//5h+XfO++BTfn8pO5/OR4vpDLT47nJ50QCH/e+s0oWzHlflCO7Rt0lRCOrpYuxCk0o1wbT4CECOK5Fnr0O9dvXlHZuvWO0VxhNFeYs2jlyvrnR8cnV9Y/P2fRytHc5FhusuWJb0XZhBglVJaduEFCshDnTe1Xmr49PFYYHptofG7vnEUrh8YKcxatbHxurxUX4ZWmbwtzcvZdtPoHs3ejMB2fyOH7RRYXHmC7/2IZsdkXuacxuasxuQGlphJleu2hF7AQshm8luPbR+oqwvevxGtn3Iq7K+v2ieM7lmN7Z4KEXOKU0I7N382OFLIjhezIhCWeOYtWZkcmrJSdm78ryGdoKraHPbEVKb4ZsXc6KyF8h1WfivC9VTl5iVrwfMX+z5dQKYXQWy/jmy272RTNwN7kj0KMm646csF3LCMKBgm5xCmhbQ3fzwxNWGbpJ3heZhwSbFgvTGckJOjZXhUJ83LfKO5sL5JQSYXgzdCppXvEVsuIpy6mYtwNr477GiREEKeEfv/YonQ2b5k1CplMCAQOhqYg9oc1Agn5VuQlIae3sb1foKHSCiElJB7WQEJRE6eEttb94PJg/vJg3hqCLg/mTCYEAgfsa8Wm8sTe8QHS+RM5Z2qkEXMbukD/iRznusfp/YQ2LS/nCidwIdREDr9yIpSF3XinWk6UziQwnzVISECcEnp87Q97BnI9mZx1R65nIO82qxgCgYc7t1JUlRgc3Gtm5zsWpfNuJ7gF49dRVEXF1OC3ExgJCd1LKcRtBtFSVtOu/MmW21dAjBtIqDTilFDDoz/qTue6+8cv9Ocu9OcupO31216zOCGiWUr5N7IHAJw4JbTh4R+f7xvv6hs/X7QQhYGEgHiIU0LrfruYMrtNWAiEwICEgHiA9UIAEAqQEACEAiQEAKEACQFAKEBCABAKkBAAhAIkBAChiE1CCKFPfPKT3oYQt3llfcBE2vgH0jYMIIlTQp++v8XbopIQ/Qi2lD1V2oYBJLNQQoamKIqk3ROepUgecUooCLysoSRkPerstfg6TkBCySNOCU3VB5cQf80Alq5omufKUU6nDRCGgYlYQC+v4GQn/PGFSMUyFWfBgsdKCmIBHefEgekmZgk5Qw13/PGTkFewAWINECMXXwn5h2EQ1u4RrYFdQEqVKVrPx2SE4UoapB6FBBQlJAo2QKUXD/kBO4SjEHtIpgtDHQiy8yMciOoiV5VzMlKrtYHYkGsUMoPETvCSEC++h32ITXzwyVc5JcQuyTaFwvapyz8uiuMEQooX6UYh/9gJHhM57BKFN5EjiqBHIfcmslcYBurChle7R7QGNsJBAAlxMxqapjNZgDiQbhSy3/WKnRDgdgIW9YC4nYAV4S0hYRgGnSqGrV2UnXsHgC6TH5iBd+uAe78CmH6kG4XMKcZOEON9A9t/IlcqMCzMLmR5wIcahcJhaIrgvhnPlXkbJASUgIyPmU4pdgIJNvMR6seeCbG9HSQElICMEgKABAESAoBQgIQAIBQgIQAIBUgIAELxf9Tx7JBo3qa/AAAAAElFTkSuQmCC" alt="" />

其实和上一篇的前置通知差不多,这里每个类就不做具体解释了。

第一步:

编写目标类:

package cn.itcast.spring.d_aspectj;

//目标业务类
public class CustomerService { public int delete() {
System.out.println("this is delete");
return 1;
} }

第二步:

编写切面类

//切面类(内部可以写很多的Advice的方法)
public class MyAspect { //可以传两个参数,后置通知相比前置通知来时
//一个特点是,因为后置通知是运行在目标方法之后的,所以他可以拿到目标方法的运行的结果
public void afterReturning(JoinPoint joinPoint,Object result)
{
System.out.print("后置通知的运行"+result); } }

第三步:编写Spring配置文件

<!-- 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"/> <!-- 这个参数是配置返回的 必须和public void afterReturning(JoinPoint joinPoint,Object result)这个方法里面的 result一字不差-->
<aop:after-returning method="afterReturning" returning="result" pointcut-ref="mypointcut2" />
</aop:aspect>

第三步:编写测试类

    @Test
public void testafter()
{System.out.print(customerService.getClass().getName());
customerService.delete(); }

输出结果:

this is delete
后置通知的运行1

看到没  !返回了目标函数的执行结果。

13Spring_AOP编程(AspectJ)_后置通知的更多相关文章

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

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

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

  3. AOP 和 前置通知,后置通知

    Spring 1.AOP:中文名称面向切面编程 2.英文名称:(Aspect Oriented Programming) 3.正常程序执行流程都是纵向执行流程 3.1 又叫面向切面编程,在原有纵向执行 ...

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

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

  5. spring 切面 前置后置通知 环绕通知demo

    环绕通知: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...

  6. Spring AOP前置通知和后置通知

    Spring AOP AspectJ:Java社区里最完整最流行的AOP框架 在Spring2.0以上的版本中,可以使用基于AspectJ注解或基于XML配置的AOP 在Spring中启用Aspect ...

  7. spring学习 十 schema-based 前置后后置通知

    spring 提供了 2 种 AOP 实现方式:(1)Schema-based ,(2)AspectJ Schema-based:每个通知都需要实现接口或类,配置 spring 配置文件时在<a ...

  8. Spring初学之xml实现AOP前置通知、后置通知、返回通知、异常通知等

    实现两个整数的加减乘除,在每个方法执行前后打印日志. ArithmeticCalculator.java: package spring.aop.impl.xml; public interface ...

  9. Spring初学之annotation实现AOP前置通知、后置通知、返回通知、异常通知。

    实现两个整数的加减乘除.在执行每个方法之前打印日志. ArithmeticCalculator.java: package spring.aop.impl; public interface Arit ...

随机推荐

  1. 换SSD硬盘,重装系统,一阵子忙乱

    许久没重装过系统了,低声下气地问老板要了一块SSD硬盘,不马上安装上手痒得难受,但年底这个时候重装系统绝对忙乱,差点耽误了一份申请表和一份培训记录表.   SSD安装:先从网上找相关贴子,最主要的一个 ...

  2. 初始block,关于定义的几个小题目

    block的定义和C语言指针函数非常相似,就可以照着指针函数的方法去依葫芦画瓢就可以了 block中的^只是用来表示这是一个block对象,和函数指针中的*作用一样,只是一个标识符 下面有三个小例子来 ...

  3. Charles使用详情

    Charles各版本下载: Charles for Windows 32 bit Charles for Windows 64 bit Charles for linux Charles for Ma ...

  4. CoreAnimation-06-CAKeyframeAnimation

    概述 简介 CAKeyframeAnimation又称关键帧动画 CAKeyframeAnimation是抽象类CAPropertyAnimation的子类,可以直接使用 通过values与path两 ...

  5. 通过JAVA反射,调用未知类的类方法

    下面是一个比较简单的通过JAVA的反射机制调用已知方法的例子 package com.togeek.mvntest; import java.lang.reflect.InvocationTarget ...

  6. 最近开始研究PMD(一款采用BSD协议发布的Java程序代码检查工具)

    PMD是一款采用BSD协议发布的Java程序代码检查工具.该工具可以做到检查Java代码中是否含有未使用的变量.是否含有空的抓取块.是否含有不必要的对象等.该软件功能强大,扫描效率高,是Java程序员 ...

  7. 优秀的PHP开源项目集合

    包管理Package Management Package Management Related 框架 框架组件 微框架Micro Frameworks 内容管理系统Content Managemen ...

  8. leveldb源码分析—Recover和Repair

    leveldb作为一个KV存储引擎将数据持久化到磁盘,而对于一个存储引擎来说在存储过程中因为一些其他原因导致程序down掉甚至数据文件被破坏等都会导致程序不能按正常流程再次启动.那么遇到这些状况以后如 ...

  9. 使用Sqoop,最终导入到hive中的数据和原数据库中数据不一致解决办法

            Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql.postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL , ...

  10. android中progress进度条的使用

    activity.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...