小编Jen*_*gat的帖子

Dagger 2模块依赖图:多次绑定

我是Dagger 2的新手,试图将一个(相当)复杂的应用程序移植到它.

我们对'common'库有几个依赖(与其他项目共享).那些"常见"库有时依赖于其他"常见"库.每个库都公开一个模块.

一个例子:

@Module
public class JsonModule {
    @Provides
    public Mapper provideMapper(ObjectMapper objectMapper) {
        return new DefaultMapper(objectMapper);
    }

    @Provides
    public ObjectMapper provideObjectMapper() {
        return ObjectMapperFactory.build();
    }
}
Run Code Online (Sandbox Code Playgroud)

我们的HttpModule依赖于JsonModule:

@Module(includes = {JsonModule.class})
public class HttpModule {
    public HttpHelper provideHttpHelper(ObjectMapper objectMapper) {
        return new DefaultHttpHelper(objectMapper);
    }
}
Run Code Online (Sandbox Code Playgroud)

最后在我的应用程序中,我依赖于这两个模块:

@Module(includes = {JsonModule.class, HttpModule.class})
public class MyAppModule {
    public Service1 provideService1(ObjectMapper objectMapper) {
        return new DefaultService1(objectMapper);
    }

    public Service2 provideService2(Mapper mappper) {
        return new DefaultService2(mappper);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个依赖于我的MyAppModule的组件:

@Component(modules = MyAppModule.class)
@Singleton
public …
Run Code Online (Sandbox Code Playgroud)

dagger dagger-2

9
推荐指数
2
解决办法
5871
查看次数

标签 统计

dagger ×1

dagger-2 ×1