AOP 的应用场景
AOP 的常见框架
hugo
AOP 的基本概念
- 横切关注点(Cross-cutting concerns)
- 连接点(Joint point)
- 通知(Advice)
- 切入点(Pointcut)
- 切面(Aspect)
- 织入(Weaving)
常见AOP 的实现方式
APT
APT(Annotation Processing Tool)即注解处理器。在编译期生成.java文件,使用的 Annotation
类型是 SOURCE
.
代表框架:DataBinding、Dagger2、ButterKnife、EventBus3、DBFlow、AndroidAnnotation
特点:
- 只能生成.java文件,而不能在现有类中插入代码
- 可以通过
javapoet
来简化.java的生成操作 - 会在运行时产生一些代理类的缓存,增加内存的负担。
AspectJ
Javassist
AspectJ简单使用
AspectJ 相关注解
- @Aspect:声明切面,标记类
- @Pointcut(切点表达式):定义切点,标记方法
- @Before(切点表达式): 切点之前执行
- @Around(切点表达式):切点之前之后执行(切点执行 oinPoint.proceed)
- @After(切点表达式):后置通知,切点之后执行
- @AfterReturning(切点表达式):返回通知,切点方法返回结果之后执行
- @AfterThrowing(切点表达式):异常通知,切点抛出异常时执行
切点表达式
1 | execution(<修饰符模式>? <返回类型模式> <方法名模式>(<参数模式>) <异常模式>?) |
参考文章
书籍:《Android高级进阶》
文章:https://www.jianshu.com/p/8582f896d136?utm_source=desktop&utm_medium=timeline
文章:https://www.jianshu.com/p/890dd0b77ded
文章:https://fernandocejas.com/2014/08/03/aspect-oriented-programming-in-android/