我有重寫綁定PrivateModule的問題。 這裏是我的示例項目:機器人腿PrivateModule和綁定覆蓋
所以我有3個車廂,每節得到變速器和發動機的CommonModule。
而且我將Driveline分別綁定到每輛車的註釋上,因此每輛車都獲得不同的等級。 因此標準的機器人腿問題/解決方案。
但現在讓我們假設我有10個不同的汽車,我想在一個模塊中更改引擎。 我可以從CommonModule
中刪除引擎,並在所有10個模塊中定義引擎。 但更好的解決方案是重寫只有一個類的引擎綁定。
我該如何做到這一點?
如果我在Module3我bind(Engine.class).to(PetrolEngine.class);
我自然得到一個綁定到引擎已配置在。
這就是爲什麼我們有Modules.override。
但
Injector injector = Guice.createInjector(
commonModule,
module1,
module2,
Modules.override(commonModule).with(module3)
);
給了我同樣的錯誤。
那麼,有沒有一種方法來定義PrivateModule
並覆蓋綁定,在AbstractModule
定義?
我不明白我用Module3重寫什麼。 如果我把模塊3中的安裝()綁定(Engine.class).to(PetrolEngine.class)我得到綁定到引擎已配置在CommonModule。 http://pastebin.com/LpZ2pWMP 我在哪裏可以重寫呢? – Steinkauz
我編輯答案看起來像我真正想到的......但老實說,IMO的解決方案並不比只在每個模塊中放置特定的引擎綁定好得多(就像您最初在查詢中寫的那樣) – losipiuk