他のGuiceModules、ProdDbModuleおよびProdPubSubModuleに依存したいGuiceモジュールProdModuleがあるとしましょう。 ProdModuleのconfigure()をどのように実装しますか?
インストール 他のモジュール
protected void configure(){
install(new ProdDbModule());
install(new ProdPubSubModule());
// etc.
}
install
を使用すると便利ですが、install
を作成するときに必要なすべてのモジュールを提供する限り、他のモジュールをInjector
する必要はありません。
Injector injector = Guice.createInjector(new ProdDbModule(),
new ProdPubSubModule(), new ProdModule());
これにより、ProdModule
自体を変更することなく、エントリポイントクラスのこれらのモジュールの1つだけを変更する柔軟性が高まります。 requireBinding
メソッドを使用して、他のモジュールが提供する必要のあるバインディングをモジュールで示すこともできます。
_Modules.combine
_を使用して、他のすべてのモジュールを含む新しいモジュールを作成できます。 ( このリンク を参照)
違い:
install()
のような密結合モジュールの影響を受けません。Module
が作成されます。つまり、インジェクターにさまざまなモジュールを簡単に追加できます。_import com.google.inject.util.Modules;
Module module = Modules.combine(new ProdDbModule(),
new ProdPubSubModule(), new ProdModule());
Injector injector = Guice.createInjector(module);
_