Dagger2在组件化中的使用

本文将适合有Dagger2使用基础及考虑组件化构建项目的同学

首先看一下组件化的大概样子

组件图

如何让dagger2在组件A、B、C等组件有效的使用呢?

问题1:各组件间有相同的数据,希望与各个模块共同享用(如数据库)

问题2:各组件有各自独立的数据,只希望在自己的组件使用(如网络接口)

问题3:不想把全部数据都丢在基础组件,造成基础组件越来越庞大

思路:

1.在基础组件构建AppComponent及AppModule,将共同的数据类及配置提供出来(如网络配置,数据库等)

2.在业务组件创建各自的Component及Module,并依赖AppComponent,并配置各自需要提供的数据(如网络接口类实例等)

3.将个组件所创建的Dagger方法注入到各个需要的地方(Activity等)

实现方法:

1.配置dagger2

在build.gradle添加如下配置


2.基础组件创建dagger2的component,module如下图



3.在业务组件中实现子依赖



4.在Activity中进行注入

详细代码请看:

组件化demo :https://github.com/rongkun/ComponentJava

kotlin版:https://github.com/rongkun/Component

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容