简体   繁体   English

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

[英]How to manage my shared dependencies between different modules?

I have the following services TopService that injects MidService that injects LowService 我有以下服务TopService that injects MidService that injects LowService

I want to use TopService with LowServiceA in one maven project (let's call it ProjectA). 我想在一个maven项目中使用TopServiceLowServiceA (我们称之为ProjectA)。 ProjectB depends on another maven project (call ProjectB) that uses the TopService with LowServiceB . ProjectB依赖于另一个使用TopServiceLowServiceB maven项目(调用ProjectB)。

Below is how I have ProjectA's Guice Module defined: 以下是我如何定义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());
        });
    }
}

I'm just wondering if this is the best way to configre my dependencies. 我只是想知道这是否是配置我的依赖项的最佳方法。 One thing I don't like about this approach is that I have to manually bind TopService , MidService , and LowService each time. 我不喜欢这种方法的一件事是我TopService都必须手动绑定TopServiceMidServiceLowService

just make CommonsModule and ProjectAModule and ProjectBModule and create injector using 2 modules depending on project. 只需制作CommonsModule和ProjectAModule以及ProjectBModule,并根据项目使用2个模块创建注入器。

CommonsModule should contain CommonsModule应该包含

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

and ProjectAModule/ProjectBModule 和ProjectAModule / ProjectBModule

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

or 要么

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM