私はプロバイダを作成するモジュールを持っており、そのプロバイダは同じモジュール内の別のプロバイダの依存関係として必要です。しかし、これは私の設定では現在できません。どうすればこの問題を解決できますか?また、すべての依存関係は第三者図書館であることに注意してください。私はモジュール内でこれを束縛すべきではないと私は信じています。Guice:@providesプロバイダへの依存性注入
残念ながら、NDAに、私は実際のコードを提供することはできませんが、依存関係の階層の例を以下に見られることができます。
public MyModule extends AbstractModule {
@Override
protected void configure() {}
@Singleton
@Provides
public Engine provideEngine(){
Map<String, String> engineProperties = new HashMap<>();
engineProperties.put("brand", "some brand");
engineProperties.put("capacity", "2.6 litres");
return new Engine(engineProperties);
}
@Inject
@Provides
public Car provideCar(Engine engine){
Car car = new Car(engine);
return car;
}
}
は短いです、私はいくつかのプロパティを設定し、カスタムエンジンを作成する必要がありますそのエンジンをCar作成の依存関係として使用することをお勧めします(モジュールの@Injectアノテーションを使用して注入することができないことを十分に認識していますが、これを単に達成したいものの参照として使用します)。
@Injectを削除して、依存オブジェクト、つまり車のプロバイダ内のエンジンをsysoutしようとしましたが、Imが返されました。ここの何かが欠けているように見える。 – aDiT
コードを見ずにここを移動するのは難しいでしょうし、(NDAのために)実行可能なコードで同じ問題を示しているSSCCEもあります。しかし、Guiceがこれらのメソッドを呼び出すようにして、手動で '@ Provides'アノテートされたメソッドを呼び出さないようにするのは間違いありません。 –
はい、Guiceがこれらのメソッドを呼び出させるようにしました。実行中のコードを更新してください。しばらく私と一緒にいらしてください。 – aDiT