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

给出案例:

案例结构图:

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

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

第一步:

编写目标类:

  1. package cn.itcast.spring.d_aspectj;
  2.  
  3. //目标业务类
  4. public class CustomerService {
  5.  
  6. public int delete() {
  7. System.out.println("this is delete");
  8. return 1;
  9. }
  10.  
  11. }

第二步:

编写切面类

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

第三步:编写Spring配置文件

  1. <!-- AspectJ AOP -->
  2. <!-- 配置目标 -->
  3. <bean id="CustomerService" class="cn.itcast.spring.d_aspectj.CustomerService"></bean>
  4. <!-- 配置切面类 -->
  5. <bean id="MyAspect" class="cn.itcast.spring.d_aspectj.MyAspect"></bean>
  6. <aop:config>
  7. <!-- ref引用切面类 -->
  8. <aop:aspect ref="MyAspect">
  9.  
  10. <aop:pointcut expression="execution(* cn.itcast.spring.d_aspectj.CustomerService.*(..))" id="mypointcut2"/>
  11.  
  12. <!-- 这个参数是配置返回的 必须和public void afterReturning(JoinPoint joinPoint,Object result)这个方法里面的 result一字不差-->
  13. <aop:after-returning method="afterReturning" returning="result" pointcut-ref="mypointcut2" />
  14. </aop:aspect>

第三步:编写测试类

  1. @Test
  2. public void testafter()
  3. {System.out.print(customerService.getClass().getName());
  4. customerService.delete();
  5.  
  6. }

输出结果:

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. Android获取焦点所在控件

    View vFocus=getWindow().getDecorView().findFocus(); if(vFocus instanceof EditText) { ((EditText) vFo ...

  2. Jenkins部署.net自动化构建

    1.环境部署: windows server 2008R2环境   2.相关软件 SVN(源代码管理器:jenkins通过插件从源代码管理器下载代码)   Jenkins(主角)地址:http://f ...

  3. Python学习 windows下面安装Python和pip(一)

    windows下面安装Python和pip 安装Python 第一步,我们先来安装Python, https://www.python.org/downloads/ 这里选择的是2.7.10 第二步. ...

  4. 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

    一.第一种写法 package com.pb.demo1; import java.util.Scanner; /** * 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字. ...

  5. OC语言-01-面向过程与面向对象思想

    一.面向过程 1> 思想 面向过程是一种以过程为中心的最基础编程思想,不支持面向对象的特性. 面向过程是一种模块化程序设计方法 2> 开发方法 面向过程的开发方法是以过程(也可以说是模块) ...

  6. 自学 iOS – 三十天三十个 Swift 项目

    自学 iOS – 三十天三十个 Swift 项目 github源码地址:https://github.com/allenwong/30DaysofSwift

  7. Monyer's Game 0~5关过关方法

    自从Monyer编写了这个通关小游戏,可谓是好事坏事参半吧! 好事是Monyer认识了许多电脑高手,包括netpatch.luoluo等,连LCX这种骨灰级选手也过来了,可谓是收获不小(所以既然我已经 ...

  8. Python UnicodeDecodeError

    出于对goagent的兴趣,看了python,后来又想了解一下gae,于是就按照gae python创建hello world应用程序,可是一开始就遇到这样一个问题: UnicodeDecodeErr ...

  9. Android开发艺术探索学习笔记(十一)

    第十一章  Android的线程和线程池 从用途上来说,线程分为子线程和主线程,主线程主要处理和界面相关的事情,而子线程往往用于执行耗时的操作.AsyncTask,IntentService,Hand ...

  10. hibernate取出count(*)的办法

    1.定义查询语句    String sql="select count(*) from ExcelInfor";2.获取count(*)返回结果: (1)int count=In ...