AOP(Aspect Orient Programming)面向切面编程(2)
3.5 After 增强处理:
After 与 AfterReturning 的区别:
After : 增强处理不管目标方法如何结束,他都会被织入。因此,After 增强处理必须准备处理正常返回和异常返回两种情况,这种增强处理通常用于释放资源。
AfterReturning : 增强处理只有在目标方法成功完成才会被织入。
如下:
package org.advice.After;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.After; @Aspect
public class AfterAdviceTest {
@After (\
public void release() {
System.out.println(\模拟方法结束后的释放资源....\ } }
3.6 Around 增强处理 :
Around 增强处理既可以在执行目标方法之前织入增强处理,可以在执行目标方法之后织入增强动作。同时,Around 增强处理甚至可以决定目标方法在什么时候执行,如何执行,甚至可以完全阻止目标方法的执行。
Around 增强处理可以改变执行目标方法的参数值,也可以改变执行目标方法之后的返回值。
当定义一个 Around 增强处理方法时,该方法的第一个形参必须是 ProceedingJoinPoint 类型,调用 ProceedingJoinPoint 的 proceed() 方法才会执行目标方法。
如下:
package org.advice.Around;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; @Aspect
public class AroundAdviceTest {
@Around ( \
public void processText(ProceedingJoinPoint PJ) throws Throwable {
System.out.println(\执行目标方法之前,模拟开始事务。\ PJ.proceed() ;
System.out.println(\执行目标方法之后,模拟结束事务。\ } }
3.7 访问目标方法的参数:
访问目标方法的做法是定义增强处理时将第一个参数定义为JoinPoint 类型,当该增强处理方法被调用时,该JoinPoint 参数就代表了织入增强处理的连接点。该JoinPoint 里包含了如下常用的方法:
> Object[] getArgs() : 返回执行目标方法时的参数。
> Signature getSignature() : 返回被增强的方法的相关信息。
> Object getTarget() : 返回被织入增强处理的目标对象。 > Object getThis() : 返回AOP框架为目标的相关信息。 注意:ProceedingJoinPoint 该类是JoinPoint 的子类。
3.8 定义切入点:
为一个切入表达式起一个名称,从而允许在多个增强处理中重用该名称。Spring AOP 只支持以Spring Bean 的方法执行组 作为连接点,所以可以把切入点看错所有能和切入表达式匹配的Bean 方法。
切入点定义包含两个部分:
> 一个切入点表达式。
> 一个包含名字和任意参数的方法签名。
如下:
package org.advice.AfterReturning;
import org.aspectj.lang.annotation.*;
@Aspect
public class adviceExpression {
@Pointcut(\ public void test() { }
} 注意:上面代码中的 test方法的返回值必须是void , 且当用private 访问控制符修饰时,则仅能在切面类中使用该切入点。
package org.advice.AfterReturning;
import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; @Aspect
public class AfterReturningAdivceTest { @AfterReturning( returning = \
pointcut = \ public void log(Object rvt) {
System.out.println(\获取目标方法返回值:\ System.out.println(\模拟记录日志功能...\ } }
3.9 切入点指示符
Spring AOP 仅仅支持部分 Aspect J 的切入指示符。
Spring AOP 支持的切入点指示符有:
> exection : 用于匹配执行方法的连接点,
> within : 限定匹配特定类型的连接点,当使用Spring AOP 的时候,只能匹配方法执行的连接点。
如下:
within(org.service.imp.*) // imp 包中的任意连接点
within(org.service.imp..*) // imp 包或子包中的任意连接点
> this : 用于限定AOP 代理必须是指定类型的实例,用于匹配该对象的所有连接点。当使用Spring AOP 的时候,只能匹配方法执行的连接点。
> target : 用于限定目标对象必须是指定类型的实例,用于匹配该对象的所有连接点。当使用Spring AOP 的时候,只能匹配方法执行的连接点。
如下:
// 匹配实现了Person 接口的目标对象的所有连接
// 在Spring AOP 中只是方法执行的连接点
target(org.service.imp.Person)
> args : 用于对限定目标参数类型的限定,要求参数类型是指定类型的实例。当使用Spring AOP 的时候,只能匹配方法执行的连接点。
Spring 支持使用如下路基运算符来组合切入点表达式。
> !! : 只要连接点匹配任意一个切入点表达式。
> && :
> ! : 要求连接点不匹配指定切入点表达式。 …… 此处隐藏:792字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]公司协助某村精准扶贫工作总结.doc
- [高等教育]高二生物知识点总结(全)
- [高等教育]苏教版数学三年级下册《解决问题的策略
- [高等教育]仪器分析课程学习心得
- [高等教育]2017年五邑大学数学与计算科学学院333
- [高等教育]人教版七年级下册语文第四单元测试题(
- [高等教育]2018年秋七年级英语上册Unit7Howmuchar
- [高等教育]2017年八年级下数学教学工作小结
- [高等教育]湖南省怀化市2019届高三统一模拟考试(
- [高等教育]四年级下册科学_基础训练及答案教材
- [高等教育]城郊煤矿西风井管路伸缩器更换施工安全
- [高等教育]昆八中20182019学年度上学期期末考试
- [高等教育]项目部各类人员任命书
- [高等教育]上市公司经营水务产业的模式
- [高等教育]人教版高二化学第一学期第三章水溶液中
- [高等教育]【中考物理第一轮复习资料】四.压强与
- [高等教育]金坑水电站报废改建工程机电设备更新改
- [高等教育]高中生物教学工作计划简易版
- [高等教育]2017年西华大学攀枝花学院(联合办学)44
- [高等教育]最新整理超短爆笑英文小笑话大全
- 优秀教师继续教育学习心得体会
- 阳历到阴历的转换
- 留守儿童教育案例分析
- 华师17春秋学期《玩教具制作与环境布置
- 测速传感器新型安装装置的现场应用
- 人教版小学数学三年级下册第四单元
- 创业个人意向书
- 山东省潍坊市2012年高考仿真试题(三)
- [恒心][好卷速递]四川省成都外国语学校
- 多少人错把好转反应当成了病情加重处理
- 中外广播电视史复习资料整理
- 江苏省扬州市江都区宜陵镇中学2014-201
- 工程造价专业毕业实习报告
- 广西师范学院心理与教育统计
- aympkrq基于 - asp的博客网站设计与开
- 建筑业外出经营相关流程操作(营改增后
- 人治 德治 法治
- [精华篇]常识判断专项训练题库
- 中国共产党为什么要实行民主集中
- 小学数学第三册第一单元试卷(A、B、C




