AOP架构设计
2019-08-22 本文已影响0人
星云春风
AOP
- Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术
- 在运行时,编译时,类加载期,动态地将代码切入到类的指定方法、指定位置上的编程思想。
- AOP在编程历史上可以说是里程碑式的,对OOP编程是一种十分有益的补充。
- AOP像OOP一样,只是一种编程方法论,AOP并没有规定说,实现AOP协议的代码,要用什么方式去实现。
- OOP侧重静态,名词,状态,组织,数据,载体是空间;
- AOP侧重动态,动词,行为,调用,算法,载体是时间;
AspectJ
- 介绍:AspectJ是一个面向切面编程的框架。AspectJ是对java的扩展,而且是完全兼容java的,AspectJ定义了AOP语法,它有一个专门的编译器用来生成遵守Java字节编码规范的Class文件。AspectJ还支持原生的Java,只需要加上AspectJ提供的注解即可。在Android开发中,一般就用它提供的注解和一些简单的语法就可以实现绝大部分功能上的需求了。
- AOP中的术语
- Joinpoint(连接点),所谓连接点是指那些被拦截到的点
- Pointcut(切入点),所谓切入点是指我们要对哪些 Joinpoint 进行拦截的定义
- Advice(通知/增强),所谓通知是指拦截到 Joinpoint 之后所要做的事情就是通知
- Introduction(引介),引介是一种特殊的通知在不修改类代码的前提下, Introduction 可以在运行期为类 动态地添加一些方法或 Field
- Target(目标对象),代理的目标对象
- Weaving(织入),是指把增强应用到目标对象来创建新的代理对象的过程. AspectJ 采用编译期织入和类装在期织入
- Proxy(代理),一个类被 AOP 织入增强后,就产生一个结果代理类
- Aspect(切面),是切入点和通知(引介)的结合
- Advice分类
- Before,前置通知, 在目标执行之前执行通知
- After,后置通知, 目标执行后执行通知
- Around,环绕通知, 在目标执行中执行通知, 控制目标执行时机
- AfterReturning,后置返回通知, 目标返回时执行通知
- AfterThrowing,异常通知, 目标抛出异常时执行通知
- 切入点指示符
- execution,用于匹配方法执行的连接点
- within,用于匹配指定类型内的方法执行
- this,用于匹配当前AOP代理对象类型的执行方法;注意是AOP代理对象的类型匹配,这样就可能包括引入接口也类型匹配
- target,用于匹配当前目标对象类型的执行方法;注意是目标对象的类型匹配,这样就不包括引入接口也类型匹配
- args,用于匹配当前执行的方法传入的参数为指定类型的执行方法
- @within,用于匹配所以持有指定注解类型内的方法
- @target,用于匹配当前目标对象类型的执行方法,其中目标对象持有指定的注解
- @args,用于匹配当前执行的方法传入的参数持有指定注解的执行
- @annotation,用于匹配当前执行方法持有指定注解的方法