创建安装在当前模块内部的另一个模块的胶注器

问题描述 投票:1回答:1

具有需要绑定许多实现的接口。由于诸多限制,请进行以下设计(可能效果不佳,请忽略设计)。

是否有可能为当前模块中安装的另一个模块创建注入器,同时仍为当前模块运行configure()方法。

public class CurrentModule extends AbstractModule{


         @Override
         protected void configure() {
                install(new OtherModule());
                final someInterface getInstance = methodToGetInstance();
                bind(SomeInterface.class).to(getInstance);

         }


         public SomeInterface methodToGetInstance() {
          Injector injector = Guice.createInjector(new OtherModule());
          return new ClassImplementingSomeInterface(injector.getInstance(dependency)); 
       }
}
java dependency-injection guice
1个回答
1
投票

是的,您提供的方法可以实现您的要求。这是您应该如何做:

class CurrentModule extends AbstractModule {

  @Override protected void configure() {
    install(new OtherModule());

    // Optional, but it's good to write it if the dependency becomes missing from OtherModule.
    requireBinding(DependencyFromOtherModule.class);
  }

  @Singleton
  @Provides SomeInterface createSomeInterface(DependencyFromOtherModule dependency) {
    return new ClassImplementingSomeInterface(dependency);
  }

}
© www.soinside.com 2019 - 2024. All rights reserved.