複数の場所からGuiceインジェクターを参照することが唯一の解決策であると思われるユースケースがありますが、これは一般的に推奨されていません。
私のアプリケーションは、オープンソースのETLプラットフォームであるTalendの上に構築されています。私の実際のアプリケーションのほとんどは、Talendコンポーネントによって呼び出されるJavaクラスにあります。これらのコンポーネントには、私が作成したJavaスニペットが含まれており、クラスをインスタンス化/呼び出します。
これで、Javaクラス全体でGuiceを使用するつもりですが、Talendコンポーネントに依存関係を注入する方法はまったくありません(Javaスニペットで使用できるようにするため)。代わりに、実際にこれらの依存関係を作成する必要があります。少なくともGuiceにインスタンス化を制御させたいのですが、これは、を使用する代わりにnew
、クラス(コンストラクターを使用するクラス)をインスタンス化できる唯一の方法@Inject
はを呼び出すことであるように見えることを意味しますinjector.getInstance
。これは、インジェクターを維持する必要があることを意味します。おそらく、そもそもインジェクターを作成し、シングルトンとして利用できるようにする昔ながらの工場を使用しています。
私はこれを処理する他の方法を見ることができませんが、おそらく私は何かが欠けています。