



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3.1.3 Pointcut切点Pointcut(切点):决定Advice通知应该作用于哪个连接点,也就是说通过Pointcut切点来定义需要增强的方法的集合,这些集合的选取可以按照一定的规则来完成。在这种情况下,Pointcut通常意味着标识方法,例如,这些需要增强的地方可以是被某个正则表达式进行标识,或根据某个方法名进行匹配等。为了方便用户使用,Spring AOP提供了具体的切点供用户使用,关于切点,可以看看Spring AOP中的类继承体系,如图3-5所示。在Pointcut的基本接口定义中可以看到,需要返回一个MethodMatcher;对于Point的匹配判断功能,具体是由这个返回的MethodMatcher来完成的,也就是说,由这个MethodMatcher来判断是否需要对当前方法调用进行增强,或者说对当前调用方法是否需要应用配置好的advice通知。在Pointcut的类继承关系中,我们以正则表达式切点 JdkRegexpMethodPointcut的实现原理为例,来具体了解切点Pointcut的工作原理。JdkRegexpMethodPointcut类完成通过正则表达式对方法名进行匹配的功能。在JdkRegexpMethodPointcut的基类 StaticMethodMatcherPointcut的实现中可以看到,设置的MethodMatcher为StaticMethodMatcher,同时JdkRegexpMethodPointcut也是这个MethodMatcher的子类,它的类层次关系如图3-6所示。如图3-6所示,在Pointcut中,通过这样的类继承关系,MethodMatcher对象实际上是可以被配置成JdkRegexpMethodPointcut来完成方法的匹配判断的。在JdkRegexpMethod-Pointcut中,可以看到matches方法,这个方法是MethodMatcher定义的接口方法;在JdkRegexpMethodPointcut的实现中,这个matches方法就是使用正则表达式来对方法名进行匹配的地方。关于在AOP框架中对matches方法的调用,我们会在下面具体分析Spring AOP实现中看到。要了解matches在AOP框架中的调用位置,比较简单的方法就是从matches方法作为起始点,去对它的方法调用关系进行追溯,可以看到对matches方法的调用关系如图3-7所示。在对matches方法的调用关系中可以看到,是JdkDynamicAopProxy的invoke方法中触发了对matches方法的调用,熟悉Proxy使用的读者,一定会想到,这个invoke方法应该就是Proxy对象进行代理回调的入口方法,这个invoke回调的实现是使用JDK动态代理完成AOP功能的一部分,关于这部分实现原理,在下面AOP的实现分析中有详细的阐述。我们这里的重点是了解Pointcut的实现原理,比如去具体看看matches本身的实现,对于JdkRegexpMethod-Pointcut的matches方法,它的是实现如代码清单3-5所示。 代码清单3-5 JdkRegexpMethodPointcut使用matches完成匹配1. protectedbooleanmatches(Stringpattern,intpatternIndex) 2. Matchermatcher=piledPatternspatternIndex. 3. matcher(pattern); 4. returnmatcher.matches(); 5. 在JDKRegexpMethodPointcut中,通过JDK来实现正则表达式的匹配,在代码清单3-5中可以看得很清楚;如果要详细了解使用JDK的正则表达式匹配功能,可以参考JDK的API文档。我们接着看看其他的Pointcut。在Spring AOP中,还提供了其他的MethodPointcut,比如通过方法名匹配进行Advice匹配的NameMatchMethodPointcut。它的matches方法实现很简单,匹配的条件是方法名相同或者方法名相匹配,如代码清单3-6所示。代码清单3-6 NameMatchMethodPointcut的matches1. publicbooleanmatches(Methodmethod,ClasstargetClass) 2. for(StringmappedName:this.mappedNames) 3. if(mappedName.equals(method.getName()| 4. isMatch(method.getName(), 5. mappedName) 6. returntrue; 7. 8. 9. returnfalse; 10. 11. protectedbooleanisMa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动仲裁签协议书劳动关系仲裁书(13篇)
- 2025年事业单位工勤技能-湖南-湖南公路养护工一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北家禽饲养员二级(技师)历年参考题库典型考点含答案解析
- 2025-2030中国线上超市行业经营效益与未来运营模式分析报告
- 医疗与医药行业:医疗信息化在智慧医疗建设中的应用报告
- 2025年事业单位工勤技能-浙江-浙江工程测量员二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河南-河南热处理工五级(初级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南图书资料员四级(中级工)历年参考题库典型考点含答案解析
- 2024版出租果树合同范本
- 2024-2025年度上海市设备监理师之设备监理合同题库与答案
- 多媒体教室使用的课件
- 2025年军队专业技能岗位文职人员招聘考试(工程机械驾驶员)历年参考题库含答案详解(5卷)
- 2025年下半年广西现代物流集团社会招聘校园招聘笔试参考题库附带答案详解(10套)
- 2025年粉笔辅警考试题库
- 水声传感器技术研究与应用
- 2025年小学教研室教学计划
- 2025年上海市建筑工程施工合同模板
- 手术室护理业务学习
- 贩卖人口罪与强迫劳动罪
- 新员工入职职业道德培训
- 宽带宣传活动方案
评论
0/150
提交评论