spring - AOP前置通知、后置通知和环绕通知详解
更新时间:2023-11-04 23:04:01 阅读量: 综合文库 文档下载
- spring推荐度:
- 相关推荐
Spring aop 前置、后置、环绕通知详解
代理模式实现前置通知、后置通知和环绕通知。 代理目标接口:
package com.print;
public interface IPrinter {
public String print(String content); }
代理目标类:
package com.print.impl; import com.print.IPrinter;
public class Printer implements IPrinter { public String print(String content) {
System.out.println(输出内容:[\
return content; } }
一、 前置通知:
切面类:
package com.print.advices;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class MyBeforAdvice implements MethodBeforeAdvice { /**
* @param m 被通知的方法对象,args 被通知的方法的参数,taget 被
代理的没标类对象 */
public void before(Method m, Object[] args, Object taget) throws Throwable {
System.out.println(\前置通知开始:--------------\System.out.println(\方法名:\System.out.println(\参数列表长度:\System.out.println(\参数:\
for(Object a : args){
System.out.println(\}
System.out.println(\对象
名:\
System.out.println(\前置通知结束-----------------\
} }
Spring配置:
class=\/> class=\\> package com.print.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; import com.print.IPrinter; public class Test { public static void main(String[] args) { ApplicationContext context = new FileSystemXmlApplicationContext(\xml\ IPrinter colorPrinter = (IPrinter)context.getBean(\ colorPrinter.print(\ } } 输出结果: 前置通知开始:-------------- 方法名:print 参数列表长度:1 参数: do something 对象名:com.print.impl.Printer 前置通知结束---------------- 输出内容:[do something] 二、 后置通知: 依然使用上边的目标类 后置通知切面类: package com.print.advices; import java.lang.reflect.Method; import org.springframework.aop.AfterReturningAdvice; public class MyAfterReturnAdvice implements AfterReturningAdvice { /** * @param returnObj 被通知方法的返回值, m 被通知的方法对象,args 被通知的方法的参数,taget 被代理的没标类对象 */ public void afterReturning(Object returnObj, Method m, Object[] args, Object taget) throws Throwable { System.out.println(\后置通知开始:--------------\ System.out.println(\方法返回值:\ returnObj); System.out.println(\方法名:\ System.out.println(\参数列表长度:\System.out.println(\参数:\ for(Object a : args){ System.out.println(\ } System.out.println(\对象名:\ System.out.println(\后置通知结束----------------\ } } 在applicationContext.xml中添加后置通知切面bean配置: class=\/> 在代理bean中添加切面arterReturnAdvice: 前置通知开始:-------------- 方法名:print 参数列表长度:1 参数: do something 对象名:com.print.impl.Printer 前置通知结束---------------- 输出内容:[do something] 后置通知开始:-------------- 方法返回值:do something 方法名:print 参数列表长度:1 参数: do something 对象名:com.print.impl.Printer 后置通知结束---------------- 三、环绕通知: 依然使用上边的目标类 环绕通知切面类: package com.print.advices; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; public class MyInterceptor implements MethodInterceptor { /** * @param invocation 被代理的目标对象 */ public Object invoke(MethodInvocation invocation) throws Throwable { Object returnObj = null; System.out.println(\环绕通知开始}}}}}}\ //执行代理目标的被通知的方法 returnObj = invocation.proceed(); System.out.println(\环绕通知结束}}}}}}\ return returnObj; } } 在applicationContext.xml中添加环绕通知切面bean配置: class=\/> 在代理bean中添加切面myInterceptor: 运行测试,得到结果: 前置通知开始:-------------- 方法名:print 参数列表长度:1 参数: do something 对象名:com.print.impl.Printer 前置通知结束---------------- {{{{{{环绕通知开始}}}}}} 输出内容:[do something] {{{{{{环绕通知结束}}}}}} 后置通知开始:-------------- 方法返回值:do something 方法名:print 参数列表长度:1 参数: do something 对象名:com.print.impl.Printer 后置通知结束----------------
正在阅读:
spring - AOP前置通知、后置通知和环绕通知详解11-04
2018-2019年初中政治鲁教版《八年级下》《第五单元 热爱集体 融入社会》综合测试试卷含答12-28
十招让你的ppt脱颖而出 - 图文05-28
ANSYS螺栓建模(谷风软件)03-21
体育部优秀部门申报材料03-08
2016届高考模拟试题_江苏省扬州中学2016届高三上学期开学考试 数学(理)附答案05-29
2016离散数学作业5答案03-20
我学会了滑滑板作文400字07-06
童年的游戏作文02-04
- 计算机试题
- 【2012天津卷高考满分作文】鱼心人不知
- 教育心理学历年真题及答案--浙江教师资格考试
- 20180327-第六届“中金所杯”全国大学生金融知识大赛参考题库
- 洪林兴达煤矿2018年度水情水害预测预报
- 基本要道讲义
- 机电设备安装试运行异常现象分析与对策
- 《有机化学》复习资料-李月明
- 非常可乐非常MC2--非常可乐广告策划提案 - 图文
- 2011中考数学真题解析4 - 科学记数法(含答案)
- 企业人力资源管理师三级07- 09年真题及答案
- 基于单片机的光控自动窗帘控制系统设计说明书1 - 图文
- 20160802神华九江输煤皮带机安装方案001
- (共53套)新人教版一生物必修2(全册)教案汇总 word打印版
- 2014行政管理学总复习
- 中国银监会关于加强地方政府融资平台贷款风险监管的指导意见
- 民宿酒店核心竞争与研究
- 游园活动谜语大全2012
- 河南省天一大联考2016届高三英语5月阶段性测试试题(六)(A卷)
- 小型超市管理系统毕业论文详细设计4
- 通知
- 后置
- 前置
- 环绕
- 详解
- spring
- AOP
- 趣味英语 - 英语游戏 - 脑筋急转弯 - - 第3篇 - 其他类
- 罪犯出监教育改造模式的探索-教育文档
- 高考物理新题型揭秘专题01碰撞与动量守恒之单项选择题
- 精密与特种加工技术课后习题解答
- 康复基础知识
- 一元线性回归方程案例数据
- 山东某医院护理技术操作考核评分标准 - 图文
- “十三五”重点项目-木薯淀粉系列产品项目可行性研究报告 - 图文
- 自动喷水灭火系统课程设计
- 初三中考英语一对一教案1
- 2016年教育心理学最新最全复习资料,看后必过
- 联合制碱工业教案1 - 图文
- 史上最全19套植物生理学试题及答案
- 2.离校手续办理办法及相关事宜说明
- 化工自动化控制仪表作业安全技术实际操作考试
- 任意角的三角函数说课稿范文
- 实验一 信号的MATLAB表示及信号运算
- 2017年机电系统市场调研及发展前景趋势预测(目录)
- 低年级规范书写教学的策略研究成果的主题报告
- 必修5名句默写及翻译