AspectJ in Android 系列:
AspectJ in Android (一),AspectJ 基础概念
AspectJ in Android (二),AspectJ 语法
AspectJ in Android (三),AspectJ 两种用法以及常见问题
前面两篇文章介绍了 AspectJ 的基础概念以及基于注解开发方式的语法,这篇文章总结了 AspectJ 的两种用法和 android-aspectjx 插件的常见问题。
AspectJ 的两种用法
我觉得以 Pointcut 切入点作为区分,AspectJ 有两种用法:(1)用自定义注解修饰切入点,精确控制切入点,属于侵入式;(2)不需要在切入点代码中做任何修改,属于非侵入式。
侵入式
侵入式用法,一般会使用自定义注解,以此作为选择切入点的规则。
下面以 JakeWharton 大神的 hugo 为例,分析自定义注解 AOP 的使用。hugo 是用于在开发环境中打印方法调用信息的,只会打印注解修饰的方法。
首先看下新增的自定义注解:
|
|
上面定义了@DebugLog
注解,可以修饰类、接口、方法和构造函数,可在 Class 文件中保留,编译期可用。更多关于 Java 注解的内容,请看之前的文章 探索注解之注解的基本概念。