重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前段时间,公司项目在做组件化重构,过程中当然会有很多痛点。
创新互联公司于2013年创立,先为云安等服务建站,云安等地企业,进行企业商务咨询服务。为云安企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。组件化最重要的是根据项目和业务进行分模块,至于模块的粒度就看大家自己来把控了!
这里要说的就是模块之间的数据传输问题
组件化之后,各个模块不相互依赖,那么怎么相互跳转和传递数据呢?
答案就是通过隐式Intent 的方式来跳转和传递数据。
以往的显示Intent 跳转,会存在类直接依赖的问题,这样会导致耦合性非常严重;相比而言,隐式Intent则不需要类之间的直接依赖,但是会出现规则集中式管理,扩展性比较差。
所以在调研期间就发现阿里开源了ARouter–路由框架。
ARouter的好处我这里就不多说,大家可以去看官方文档或者去github上看README。
【https://github.com/alibaba/ARouter】
接下来会分为若干篇blog来分析一下ARouter的源码!
看了ARouter的源码就会发现,它提供了两个SDK,一个是API,一个Compiler。
这里先说说Compiler层SDK。
RouteProcessor 路由路径处理器
InterceptorProcessor 拦截器处理器
AutowireProcessor 自动装配处理器
注解处理器的处理流程
(图片转自网络)
实际上,Compiler SDK 只是处根据扫描到的注解生成相应的映射(java)文件。
最后一步通过固定包名加载映射文件是由API SDK来做的。
以官方demo为例来说:
上图所示就是ARouter在编译期间生成的类文件。
arouter-compiler的目录结构如下:
下面分别说说这三种注解处理器:
用过编译时注解的朋友们都知道,注解处理器需要继承AbstractProcessor ,主要涉及的函数有 init(),process() 这两个。
RouteProcessor
类的继承信息:
@AutoService(Processor.class) @SupportedOptions(KEY_MODULE_NAME) @SupportedSourceVersion(SourceVersion.RELEASE_7) @SupportedAnnotationTypes({ANNOTATION_TYPE_ROUTE, ANNOTATION_TYPE_AUTOWIRED}) public class RouteProcessor extends AbstractProcessor {