博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
混合切面类型
阅读量:6683 次
发布时间:2019-06-25

本文共 1485 字,大约阅读时间需要 4 分钟。

4种定义切面的方式:

        1)基于@AspectJ注解的方式:
        2)基于<aop:aspect>的方式;
        3)基于<aop:advisor>的方式;
        4)基于Advisor类的方式。
        如果项目采用JDK5.0,可以优先考虑使用@AspectJ;如果项目只能使用低版本的JDK,则可以考虑使用<aop:aspect>;如果正在升级一个基于低版本Spring AOP开发的项目,则可以考虑使用<aop:advisor>复用已经存在的Advice类;如果项目只能使用低版本的Spring,那么就只能使用Advisor了。此外,值得注意的是一些切面只能使用基于API的Advisor方式进行构建,如基于ControlFlowPointcut的流程切面。
 
各种切面类型总结:
    @AspectJ <aop:aspect> Advisor <aop:advisor>
前置增强 @Before <aop:before> MethodBeforeAdvice 同Advisor
后置增强 @AfterReturning <aop:after-returning> AfterReturningAdvice 同Advisor
环绕增强 @Around <aop:around> MethodInterceptor 同Advisor
抛出异常增强 @AfterThrowing <aop:after-throwing> ThrowsAdvice 同Advisor
final增强 @After <aop:after> 无对应接口 同Advisor
引介增强 @DeclareParents <aop:declare-parents> IntroductionInterceptor 同Advisor
切点定义 支持AspectJ切点表达式语法,可以通过@Pointcut注解定义命名切点 支持AspectJ切点表达式语法,可以通过<aop:pointcut>定义命名切点 直接通过基于Pointcut的实现类定义切点 基本上和<aop:aspect>相同,不过切点函数不能绑定参数
连接点方法入参绑定 1)使用JoinPoint、ProceedingJoinPoint连接点对象;
2)使用切点函数指定参数名绑定
同@AspectJ
<aop:after-returning>
通过增强接口方法入参绑定 同Advisor
连接点方法返回值或抛出异常绑定 1)在后置增强中,使用@AfterReturning的returning成员绑定方法返回值中;
2)在抛出异常增强中,使用@AfterThrowing的throwing成员绑定方法抛出的异常
1)在后置增强中,使用<aop:after-returning>的returning属性绑定方法返回值;
2)在抛出异常增强中,使用<aop:after-throwing>的throwing属性绑定方法抛出的异常
通过增强接口方法入参绑定 同Advisor
 
    从表中,我们可以看出<aop:advisor>其实是<aop:aspect>和Advisor的混血儿,它的切点表示方法和<aop:aspect>相同,增强定义方式则和Advisor相同。连接点方法入参的绑定方式和Advisor一样,通过增强接口方法入参进行调用,所以<aop:advisor>在切点表达式中,需要注意不能使用切点函数绑定连接点方法入参,否则会产生错误。
    

转载于:https://www.cnblogs.com/yangyquin/p/5583103.html

你可能感兴趣的文章
新年伊始也来谈谈Webfont
查看>>
(0,fn)()的执行原理
查看>>
地址栏中输入url到显示出网页间的过程
查看>>
H5 分层屏幕适配
查看>>
Django笔记---环境搭建
查看>>
[译]理解JS中的闭包
查看>>
推荐:聚合局域网服务的扫描插件 LN2(蓝图)
查看>>
自己总结的手写代码片段
查看>>
系统SDK介绍-01
查看>>
copy strong weak assign的区别
查看>>
SpringMVC运行原理
查看>>
Eureka简介以及工作原来
查看>>
iOS 后台语音播报功能开发过程中的那些坑
查看>>
Uniqlo与Fast Retailing发出警告 46万消费者账号遭入侵
查看>>
拯救不会函数的我!!
查看>>
js预解析+作用域+this指向
查看>>
iOS KVO监听readonly属性
查看>>
线性判别分析随记
查看>>
十一课堂|通过小游戏学习Ethereum DApps编程(2)
查看>>
当iPhone不再流行 Android它将如何面对未来?
查看>>