我正在构建一个广泛使用Dagger进行依赖注入的Android应用程序。
我已将我的应用程序分成多个逻辑包,并且我尝试将所有内容拆分为多个模块,这些模块都包含在“主”模块中,以便分离关注点。
但是,现在我遇到了一个问题,我必须为每个模块维护injects {...}列表,并且它变得非常繁琐且容易出错。
例如
@Module(
injects = {
ThingA.class
},
complete = false,
library = false
)
public class FeatureAModule {
@Provides
public FeatureA providesFeature(FeatureAImpl featureA){
return featureA;
}
}
@Module(
injects = {
ThingB.class,
AnotherThingB.class
},
complete = false,
library = false
)
public class FeatureBModule {
@Provides
public FeatureB providesFeature(FeatureBImpl feature){
return feature;
}
}
@Module(
injects = {
},
complete = true,
library = false,
includes = { FeatureAModule.class, FeatureBModule.class }
)
public class ApplicationModule {
}
如果我在类中添加@Injects注释但忘记将其添加到我的注入列表中,我将获得运行时异常。如果我有一个使用2个模块的功能的类,我通常会将注入添加到两个模块中,但是如果我忘记了一个模块,那么我会从其中一个模块中删除它,以确保它不会在其他任何地方使用否则我就会遇到运行时异常。
基本上,我试图找出一种万无一失的方法,当我尝试注入某些东西(理想情况下是在匕首编译器级别)时,永远不会有“无注入”。
答案 0 :(得分:0)
然后我为每个功能创建了一个单独的模块,其中包含所有需要在注入列表中注入的类。
这样整个事情就变成了可管理的,但整个注入列表应该已经过时了