13Spring_AOP编程(AspectJ)_后置通知
后置通知和前置通知差不多。最大的特点是因为后置通知是运行在目标方法之后的,所以他可以拿到目标方法的运行的结果。
给出案例:
案例结构图:
aaarticlea/png;base64,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" 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)_后置通知的更多相关文章
- 15Spring_AOP编程(AspectJ)_抛出通知
- Spring -- aop(面向切面编程),前置&后置&环绕&抛异常通知,引入通知,自动代理
1.概要 aop:面向方面编程.不改变源代码,还为类增加新的功能.(代理) 切面:实现的交叉功能. 通知:切面的实际实现(通知要做什么,怎么做). 连接点:应用程序执行过程期间,可以插入切面的地点. ...
- AOP 和 前置通知,后置通知
Spring 1.AOP:中文名称面向切面编程 2.英文名称:(Aspect Oriented Programming) 3.正常程序执行流程都是纵向执行流程 3.1 又叫面向切面编程,在原有纵向执行 ...
- [原创]java WEB学习笔记106:Spring学习---AOP的通知 :前置通知,后置通知,返回通知,异常通知,环绕通知
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- spring 切面 前置后置通知 环绕通知demo
环绕通知: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http:// ...
- Spring AOP前置通知和后置通知
Spring AOP AspectJ:Java社区里最完整最流行的AOP框架 在Spring2.0以上的版本中,可以使用基于AspectJ注解或基于XML配置的AOP 在Spring中启用Aspect ...
- spring学习 十 schema-based 前置后后置通知
spring 提供了 2 种 AOP 实现方式:(1)Schema-based ,(2)AspectJ Schema-based:每个通知都需要实现接口或类,配置 spring 配置文件时在<a ...
- Spring初学之xml实现AOP前置通知、后置通知、返回通知、异常通知等
实现两个整数的加减乘除,在每个方法执行前后打印日志. ArithmeticCalculator.java: package spring.aop.impl.xml; public interface ...
- Spring初学之annotation实现AOP前置通知、后置通知、返回通知、异常通知。
实现两个整数的加减乘除.在执行每个方法之前打印日志. ArithmeticCalculator.java: package spring.aop.impl; public interface Arit ...
随机推荐
- ABAP:SAP报表性能的优化
大部分ABAPer都是从SAP报表及打印开始学起的,大家也都认为写个SAP报表程序是最简单不过的事了. 但是实际情况真的如此吗?写报表时除了保证数据的准确性,您可曾考虑过报表的性能问题吗? 由于报表程 ...
- android 保存 用户名和密码 设置等应用信息优化
1.传统的保存用户名,密码方式 SharedPreferences Editor editor = shareReference.edit(); editor.putString(KEY_NAME,& ...
- 【读书笔记】iOS-Objective-C对C的扩展基础知识
一,Xcode的.m扩展名表示文件含有Objective-C代码,应由Objective-C编译器处理.C编译器处理名称以.c结尾的文件,而C++编译器处理.cpp文件.在Xcode中,所有这些编译工 ...
- iOS内存管理(二)之深拷贝和浅拷贝
对象拷贝(复制对象) 1.复制对象顾名思义,复制一个对象作为副本,它会开辟一块新的一块内存(堆内存)来存储副本对象,就像复制文件一样.即源对象和副本对象是两块不同的内存区域. 2.NSObject ...
- 我的mac上的软件(以防优盘重装系统使用)
- swap分区
swap分区 一块的新加进来的硬盘,我们要怎么给它创建swap分区呢?要遵循下面四个步骤: (1)使用一个现有的分区,比如记为A (2)然后分区类型的16进制编码,即A的16进制编码. (3)格式化A ...
- C语言初学者代码中的常见错误与瑕疵(5)
问题: 素数 在世博园某信息通信馆中,游客可利用手机等终端参与互动小游戏,与虚拟人物Kr. Kong 进行猜数比赛. 当屏幕出现一个整数X时,若你能比Kr. Kong更快的发出最接近它的素数答案,你将 ...
- maven 仓库搜索添加需要的jar包
可用仓库网址: http://search.maven.org/#browse http://mvnrepository.com/ http://repository.sonatype.org/ind ...
- mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案
本人开发项目时,在从一个服务器导出数据库到另一服务器时,存储过程中,报Incorrect DECIMAL value: '0' for column '' at row -1错误. 原因: 存储过程中 ...
- 在 ServiceModel 客户端配置部分中,找不到引用协定“WebServiceTest.WebServiceSoap”的默认终结点元素。这可能是因为未找到应用程序的配置文件,或者是因为客户端元素
原文 http://blog.csdn.net/bugdemo/article/details/9083497 主题 技术 在引用WebService后,程序运行到实例化WebService时报错, ...