0

補助注射の使用についてアドバイスをお願いします。

アシスト注射について私が見た例のほとんどは、次の特徴を持っています。

コンストラクターであるクラスには、実行時にのみ発生する 1 つまたは複数のパラメーター、つまり、構築時に決定できないパラメーターと、構築時に既知の 1 つまたは複数のパラメーターがあります。したがって、ファクトリの create メソッドは、実行時に提供されるパラメータのみを取ります。

私の場合、90% の確率で、実行時パラメーターしかありません。つまり、クラス B を必要とするクラス A がありますが、B は A だけが提供できるパラメーターを取ります。したがって、B のコンストラクターには @assister パラメーターしかありません。

それがアシストインジェクションの正しい使い方なのかなと思っています。

私の最後の例の1つは次のとおりです。A は dataStructure (DTO または値オブジェクトと呼ばれることもあります) であるクラス B を返す必要があるため、必要なファクトリを A に渡し、計算後に B を返すことができるようにします。ここで、B はコンテナー クラスのようなものです。そういうケースはほとんどない

..

もう 1 つの状況は、サービス A が B サービスを必要とするが、B サービスが作成時に A からのパラメーターに依存する場合です。ただし、A からのパラメーターが彼自身が A に注入した場合、A はそれを使用して B を作成する前に、そのパラメーターに対して何らかの初期化を行います。

.

特に最後のケースでは、 A の外部で「 A の内部初期化」を行うことを目指します

そのパッケージの「サービスの内部作成」を外部化する、各パッケージに特定の作成モジュールを含めるという考えですか?

これを言っているのは、それを使用するクラス/サービスとは関係のないものをどこかに作成するのは奇妙に聞こえるといつも思っていたからです。使用法を構造から分離することに固執しないという意味ではありませんが、そのようなクラスを囲むクラスでそれを行いたいと思います。まったく関係のない遠く離れた場所ではありません。

私の現在の理解では、各パッケージは、特にプライベートコンストラクターを使用する場合に、含まれるオブジェクトの作成を一元化する作成モジュールを提供する必要があります。

私はこれまでしばらく Guice を使用してきましたが、モジュールを分離し、モジュールをパッケージと一緒に保持することについて何かを考え始めたのはつい最近のことです。私はモジュール間の継承を行ってオブジェクトの作成を連鎖させていましたが、最初からすべてを作成する1つのモジュールになりました。それは間違っていますよね?

それだけです。Guice を使用する際の正しいアプローチに関する一般的なアドバイスをいただければ幸いです。補助注射を正しい方法で使用しているかどうかはわかりません。

4

0 に答える 0