Spring AOP 学习之Advisor
2017-10-24 16:48
381 查看
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 (在目标类中添加一些新的方法和属性)
-- 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 (在目标类中添加一些新的方法和属性)
相关文章推荐
- 学习AOP之透过Spring的Ioc理解Advisor
- Spring学习(十六)----- Spring AOP实例(Pointcut(切点),Advisor)
- 学习AOP之透过Spring的Ioc理解Advisor
- 学习AOP之透过Spring的Ioc理解Advisor
- spring Aop中aop:advisor 与 aop:aspect的区别 【爱玩酷java php 学习路径】
- 学习笔记--代理与AOP及实现类似SPRING的可配置的AOP框架
- Spring学习记录(十三)---基于xml文件配置AOP
- Spring学习三(AOP面向切面编程)
- Spring AOP 学习小结
- Spring学习(24)--- AOP之 Aspect instantiation models(aspect实例模式)特别说明
- spring aop 学习
- Spring学习笔记(AOP面向切面编程)
- Spring学习之AOP总结帖
- Web框架梳理:第四章:Spring学习入门、Spring属性注入、AOP编程、注解开发
- [原创]java WEB学习笔记106:Spring学习---AOP的通知 :前置通知,后置通知,返回通知,异常通知,环绕通知
- Spring学习笔记3--面向切面(AOP)的例子
- Spring学习(2):SpringAOP基本概念详解
- Spring学习之AOP
- Spring学习-- AOP入门动态代理