0

クラス間の依存関係の重要なツリーがあるとしましょう。サイクルはありませんが、いくつかのレベルの深さがあります。一番下に hibernate がありますSession

MyService -> MyDao -> Session
MyService -> MyCollaborator -> AnotherCollaborator
MyCollaborator -> MyDao
AnotherCollaborator -> MyDao
AnotherCollaborator -> AnotherDao -> Session

あなたは要点を理解します。

SessionGuice の外部で手動で作成し、Guice を使用しMyServiceて、 this を使用して下からグラフ全体を生成したいと思いますSession。どうすればできますか?

4

1 に答える 1

3

プロバイダーを探しているようですね。

編集

プロバイダーは、バインドを作成するときに宣言できるユーザー定義のファクトリです。

これにより、ユーザーは (プロバイダー自体を注入して手動で呼び出すことにより) 不特定の数のインスタンスを注入したり、タイプの独自のコンストラクターによって実行されない必要な副作用を作成するなど、興味深い作成動作を提供したりできます。

したがって、他のサードパーティ API を依存関係に結合するための便利なツールです。目的のタイプごとにプロバイダーを作成し、必要なセットアップを実行させます。

具体的には、それらは単一のメソッドを提供する汎用インターフェイスget()であり、内部で手動で作成したい型にテンプレート化されています。

于 2012-06-20T06:16:19.700 に答える