如何管理不同模块之间的共享依赖关系?

时间:2016-08-02 03:42:08

标签: java guice

我有以下服务 TopService that injects MidService that injects LowService

我想在一个maven项目中使用TopServiceLowServiceA(让我们称之为ProjectA)。 ProjectB依赖于另一个使用TopServiceLowServiceB的maven项目(调用ProjectB)。

以下是我如何定义ProjectA的Guice模块:

ProjectAModule extends AbstractModule {

    @Override
    protected void configure() {
        install(new PrivateModule() {
        @Override
        protected void configure() {
            bind(TopService.class);
            bind(MidService.class);
            bind(LowService.class).toInstance(new LowServiceA());
        });
        install(new PrivateModule() {
        @Override
        protected void configure() {
            install(new ProjectBModule());
            bind(TopService.class);
            bind(MidService.class);
            bind(LowService.class).toInstance(new LowServiceB());
        });
    }
}

我只是想知道这是否是配置我的依赖项的最佳方式。我不喜欢这种方法的一件事是我每次都必须手动绑定TopServiceMidServiceLowService

1 个答案:

答案 0 :(得分:0)

只需制作CommonsModule和ProjectAModule以及ProjectBModule,并根据项目使用2个模块创建注入器。

CommonsModule应包含

 bind(TopService.class);
 bind(MidService.class);

和ProjectAModule / ProjectBModule

bind(LowService.class).toInstance(new LowServiceA());

bind(LowService.class).toInstance(new LowServiceB());