Spring には、アノテーション ベースと XML ベースの構成があります。前者は迅速な開発に推奨されますが、後者はより柔軟で特殊なケースを処理できます。現在、JUnit テスト用のモックの注入と、外部ライブラリからの Bean の構成の 2 つがあります。
CDI の XML 構成に相当するものが見つからなかったので、私の質問は、そのような Bean の依存性注入をどのように処理するかです。それらは外部ライブラリからのものであり、構成する必要があり、注釈を追加する可能性はありません。
Spring には、アノテーション ベースと XML ベースの構成があります。前者は迅速な開発に推奨されますが、後者はより柔軟で特殊なケースを処理できます。現在、JUnit テスト用のモックの注入と、外部ライブラリからの Bean の構成の 2 つがあります。
CDI の XML 構成に相当するものが見つからなかったので、私の質問は、そのような Bean の依存性注入をどのように処理するかです。それらは外部ライブラリからのものであり、構成する必要があり、注釈を追加する可能性はありません。
必要に応じて 3 つのソリューションがあります。
CDI は、Bean で非 CDI クラスを変換する方法を提供します。プロデューサーといいます。という名前のクラスから Bean を作成する場合は、NonCdiClass
そのようなものを作成するだけです。
public class MyProducers {
@Produces
public NonCdiClass produceNonCdiClass() {
return new NonCdiClass();
};
}
}
@Inject
必要なときにこの Beanを使用できるようになりました。
クラスには、必要な数のプロデューサー メソッドを配置できます。
プロデュースされた Bean でインジェクションをシミュレートする必要がある場合は、プロデューサー メソッド呼び出しでパラメーターをインジェクトする CDI のおかげで実行できます。
@Produces
public NonCdiClass produceNonCdiClass(MyFisrtBean param1, MySecondBean param2) {
NonCdiClass res = new NonCdiClass(param1);
res.setParam(param2);
return res;
};
}
この例MyFirstBean
でMySecondBean
は、 と は、生成時に CDI によって注入される既存の Bean クラスです。
プロデューサーは、修飾子 (それらまたはそのパラメーター) を持つこともInjectionPoint
、CDI 内部 Bean である を注入することもできます。これにより、注入の場所とそれに含まれる注釈の関数で異なる方法で Bean を生成できます。
Weld reference documentationに良いInjectionPoint
例があります。
必要があるかどうかわからないので、ここでは詳しく説明しませんが、AfterBeanValidation フェーズで拡張機能に Bean を登録できます。これらの登録済み Bean は、任意のクラスにすることができます。さらに情報が必要な場合は、ここで開発できます。
Solder は構成モジュールを統合しましたが、このプロジェクトはApache Deltaspikeにマージされる過程にあるため、維持されなくなりました。このマージは、バージョン 0.6 の Deltaspike ロードマップ: http://issues.apache.org/jira/browse/DELTASPIKE-271にあります。したがって、Solder config の使用を開始し、機能が追加されたら Deltaspike に切り替えることができます (これはかなり近いはずです)。このソリューションは私のお気に入りではありませんが、Spring 風の設定ファイルが本当に必要な場合は、これが最も近いソリューションです。
純粋な CDI は、@Alternative
テスト フェーズ中に を介してたとえばモック オブジェクトを挿入するための注釈を提供しますbeans.xml
が、多くのモック ライブラリはそのために設計されているため、より適切に機能します。
beans.xml
耳/戦争自体の外に何かを注入するために使用する方法を知りません。