Dagger2在组件化中的使用

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

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

Dagger2在组件化中的使用_第1张图片
组件图

如何让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如下图


Dagger2在组件化中的使用_第2张图片


Dagger2在组件化中的使用_第3张图片

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


Dagger2在组件化中的使用_第4张图片


Dagger2在组件化中的使用_第5张图片

4.在Activity中进行注入

Dagger2在组件化中的使用_第6张图片

详细代码请看:

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

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

你可能感兴趣的:(Dagger2在组件化中的使用)