有人可以告诉我module
中component
和Dagger2
之间的基本区别是什么?
如果可能,请举一些例子,以便易于理解。
答案 0 :(得分:19)
我们可以将模块中的依赖项分组,例如,网络模块可以提供HTTPClient Retrofit,GSON,HTTP Logger等。
类似地,我们可以拥有数据库模块,应用程序模块或任何特定于功能的模块。
Component是Module(provider)和Activity / Fragment(Consumer)之间的桥梁,它可以有多个模块。
在Activity / Fragment中,我们可以通过定义如下
来获得这些依赖关系@Inject
Gson gson;
只要注入组件(在这种情况下包含包含Gson Provider方法的网络模块的网络组件),就会实现这些依赖关系
getNetworkComponent().inject(MyActivity.this/MyFragment.this)
这是一个非常好的教程,内容简单 https://code.tutsplus.com/tutorials/dependency-injection-with-dagger-2-on-android--cms-23345
换句话说
依赖关系使用者通过连接器向依赖关系提供程序请求依赖关系(Object)。
依赖提供者:
使用@Module注释的类负责提供可以注入的对象。这些类定义了使用@Provides注释的方法。这些方法返回的对象可用于依赖注入。
依赖性消费者:
@Inject注释用于定义依赖关系。
连接消费者和制作人:
@Component带注释的接口定义了对象(模块)提供者与表示依赖关系的对象之间的连接。此连接的类由Dagger生成。