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