私は思い切って Guice を最新のプロジェクトに使用しました。全体的な印象は良いのですが、なかなか頭に入らない問題にぶつかりました。
背景: これは、ネットワーク経由でコマンドを受け入れ、それらのコマンドを解析し、それらを使用して内部データ構造を変更する Java6 アプリケーションです。当社が製造する一部のハードウェアのシミュレータです。内部データ構造に加えた変更は、コマンドが実際のハードウェアに与える影響と一致するため、データ構造の後続のクエリは、以前に実行されたコマンドに基づいてハードウェアの状態を反映する必要があります。
私が遭遇した問題は、コマンド オブジェクトがこれらの内部データ構造にアクセスする必要があるということです。これらの構造は、エミュレートされるハードウェアの実際のインスタンスによって異なるため、Guice によって作成されています。コマンド オブジェクトは、基本的にダム オブジェクトであるため、Guice によって作成されません。テキスト文字列を受け取り、それを解析し、データ構造のメソッドを呼び出します。
これをすべて機能させる唯一の方法は、これらのコマンド オブジェクトを Guice で作成し、インジェクションを介してデータ構造を渡すことです。それは本当にぎこちなく感じ、データ オブジェクトのコンストラクターを完全に肥大化させます。
ここで何を見逃したのですか?