Android AOP三剑客学习:APT, AspectJ, Javassist

目录

 

0. 基础

1. APT

2. AspectJ

3. Javassist

4. AOP


0. 基础

最近系统学习了一下注解,包括运行时注解,主要还是编译时注解APT的学习。

首先是常用的有那些注解,Android support library中自带一些很有用的注解,详细的可以参考官方博客介绍:

https://developer.android.com/studio/write/annotations

https://developer.android.com/reference/android/support/annotation/package-summary

或者参考这篇博客:Android 中注解的使用

 

在学习网上的资料过程中,顺便一起学习了AOP,一直想系统学习一下AOP,所以先把觉得不错的博客记录一下:

关于运行时注解的文章可以参考鸿洋的:

Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (上)

Android 进阶 教你打造 Android 中的 IOC 框架 【ViewInject】 (下)

Android 框架炼成 教你如何写组件间通信框架EventBus

 

安卓AOP三剑客:APT,AspectJ,Javassist

该博客不仅描述了以上内容,还例举了很多优秀的参考博客,这里我一并列出:

 

1. APT

Android 利用 APT 技术在编译期生成代码

Android 打造编译时注解解析框架 这只是一个开始一文中,也介绍了编译时注解的大致写法,为了简化,不再自己去生成一些META-INF/services/javax.annotation.processing.Processor目录,可以使用Google开发的@AutoService(Processor.class)注解处理器,在process方法中,使用javapoet可以更加简单得生成Java代码

这里推荐【Android】APT,及作者参考的文章:

编译期注解之APT
详细介绍编译时注解的使用方法
Android 编译时注解-提升
Android APT及基于APT的简单应用
Android 打造编译时注解解析框架 这只是一个开始
你必须知道的APT、annotationProcessor、android-apt、Provided、自定义注解

android-apt和annotationProcessor的使用以及互换

 

 一个使用apt和代理来实现Repository层自动化的apt-delegate

 

2. AspectJ

代表框架: Hugo(Jake Wharton)

AspectJ支持编译期和加载时代码注入,在开始之前,我们先看看需要了解的词汇:
Advice(通知): 典型的 Advice 类型有 before、after 和 around,分别表示在目标方法执行之前、执行后和完全替代目标方法执行的代码。

Joint point(连接点): 程序中可能作为代码注入目标的特定的点和入口。

Pointcut(切入点): 告诉代码注入工具,在何处注入一段特定代码的表达式。

Aspect(切面): Pointcut 和 Advice 的组合看做切面。例如,在本例中通过定义一个 pointcut 和给定恰当的advice,添加一个了内存缓存的切面。

Weaving(织入): 注入代码(advices)到目标位置(joint points)的过程。

 

深入理解AndroidAOP

 

3. Javassist

代表框架:热修复框架HotFix 、Savior(InstantRun)等

Android热补丁动态修复技术

基于Instant Run思想的HotFix方案实现

 

 

4. AOP

AOP技术常用在以下方面:
1、日志记录:业务埋点
2、持久化
3、性能监控:性能日志
4、数据校验:方法的参数校验
5、缓存:内存缓存和持久缓存
6、权限检查:业务权限(如登陆,或用户等级)、系统权限(如拍照定位)
7、异常处理

利用AOP技术将这些功能代码从业务逻辑代码中划分出来,通过对这些行为的分离,可以将它们独立到非业务逻辑。无论是日后新增,或是修改,都手到擒来易如反掌


PS:刚发现一个歪果仁的框架 http://6thsolution.github.io/EasyMVP 基于Clean Architecture 用了apt、aspectj、javassisit 不多说赶紧看源代码学习去了https://github.com/6thsolution/EasyMVP/blob/master/README.md

 

安卓AOP实战:面向切片编程

Android实用技巧之:用好泛型,少写代码

安卓AOP实战:APT打造极简路由

全局路由TRouter,更优雅的页面跳转

 

安卓AOP实战:Javassist强撸EventBus

加入OkBus,实现注解传递事件

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值