【发布时间】:2016-07-08 05:26:46
【问题描述】:
我正在尝试建立一个项目,其中有两个模块 common-lib 和 app。
lib 模块有自己的 Dagger 组件和模块,它应该与风格无关。
现在,部分依赖于模块app 中声明的风味特定资源值,因此我尝试通过接口抽象组件并覆盖其在模块app 中的实现。
Dagger 模块在common-lib gradle 模块中声明,满足与 NoOp 实现的依赖关系。
@Module
public class NetworkConfigModule {
@Provides
@Singleton
HeaderParams providesHeaderParams(NoOpHeaderParams noOpHeaderParams){
return noOpHeaderParams;
}
@Provides
@Singleton
AppHostsProvider providesAppHostsProvider(NoOpAppHostsProvider noOpAppHostsProvider){
return noOpAppHostsProvider;
}
}
Dagger 模块在app gradle 模块中声明,满足与实际实现的依赖关系。
@Module
public class NetworkConfigModule {
@Provides
@ApplicationScope
HeaderParams providesHeaderParams(KaufdaHeaderParams kaufdaHeaderParams){
return kaufdaHeaderParams;
}
@Provides
@ApplicationScope
AppHostsProvider providesAppHostsProvider(KaufdaAppHostsProvider implementation){
return implementation;
}
}
这不起作用,因为 Dagger 只是没有覆盖 Module 类,但这是意料之中的。
我的问题是,如何设置我的 Dagger 模块,以便可以在 common-lib 中使用 AppHostsProvider 和 AppHostsProvider 接口,但我将它们的实现注入到 app 中。
【问题讨论】:
标签: android gradle dependency-injection dagger-2