Spring AOP 学习之Advisor

本文详细介绍了Spring AOP中的Advisor,包括静态和动态方法匹配器,静态和动态方法切点,注解和表达式切点,以及流程切点等。此外,还探讨了不同类型的Advisor,如DefaultPointcutAdvisor、AspectJExpressionPointcutAdvisor,以及增强类型如BeforeAdvice、AfterReturningAdvice和IntroductionInterceptor。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring 支持两种方法匹配器:方法匹配器的类型由 isRuntime()返回值决定
-- true ? 动态 : 静态;
- 静态方法匹配器
:仅对方法名签名(包括方法名和入参类型及顺序)进行匹配,仅判别一次
- 动态方法匹配器
:在运行期检查方法入参的值,每次调用方法必须判断

切点类型:
- 静态方法切点:org.springframework.aop.support.StaticMethodMatcherPointcut 是静态方法切点的抽象基类,默认匹配所有。
子类:
- NameMatchMethodPointcut:匹配简单字符串方法签名
- AbstractRegexpMethodPointcut:使用这则表达式匹配方法签名
- 动态方法切点:org.springframework.aop.support.DynamicMethodMatcherPointcut 是动态方法切点的抽象基类,默认匹配所有。

-注解切点:org.springframework.aop.support.annotation.AnnotationMatchingPointcut 实现类表示注解切点。使用AnnotationMatchingPointcut 支持在Bean中直接通过Java 5.0 注解标签定义的切点。
- 表达式切点:org.springframework.aop.support.ExpressionPointcut 支持AspectJ 切点表达式语法而定义的接口。
- 流程切点:org.springframework.aop.support.ControlFlowPointcut 表示控制流程切点,根据程序

执行堆栈的信息查看目标方法是否由某一个方法直接或间接发起调用,以此判断是否为匹配的连接点。
- 复合切点:org.springframework.aop.support.ComposablePointcut 为创建多个切点而提供的方便操作类。

切面类型:
- Advisor:一般切面,仅包含一个Advice
- PointcutAdvisor:具有切点的切面,包含Advice 和Pointcut 两个类。
DefaultPointcutAdvisor: 最常用的切面类型
NameMatchMethodPointcutAdvisor: 定义按方法名定义切点的切面
RegexpMethodPointcutAdvisor: 按正则表达式匹配方法名进行切点定义的切面
StaticMethodMatcherPointcutAdvisor: 静态方法匹配器切点定义的切面,默认匹配所有
AspectJExpressionPointcutAdvisor: 用于AspectJ 切点表达式定义切点的切面
AspectJPointcutAdvisor: 用于AspectJ语法定义切点的切面
- IntroductionAdvisor:引介切面

增强:
前置增强:BeforeAdvice
后置增强:AfterReturningAdvice
环绕增强:MethodInterceptor (在目标方法执行前后实施增强)
异常抛出增强:ThrowsAdvice
引介增强:IntroductionInterceptor (在目标类中添加一些新的方法和属性)



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值