11.2.7.4. 代替を用いたインジェクションのオーバーライド
概要
代替 Bean を使用すると、既存の Bean をオーバーライドできます。これらは、同じ役割を満たすクラスをプラグインする方法として考慮できますが、動作が異なります。代替の Bean はデフォルトで無効になります。このタスクは、代替を指定し、有効にする方法を示しています。
手順11.5 インジェクションのオーバーライド
このタスクでは、プロジェクトに
TranslatingWelcome
クラスがすでにあることを前提としています。ただし、これを "mock" TranslatingWelcome クラスでオーバーライドするとします。これは、実際の Translator Bean を使用できないテストデプロイメントのケースに該当します。
代替を定義します。
@Alternative @Translating public class MockTranslatingWelcome extends Welcome { public String buildPhrase(string city) { return "Bienvenue à " + city + "!"); } }
代替案を代用してください。
置換実装をアクティベートするために、完全修飾クラス名をMETA-INF/beans.xml
またはWEB-INF/beans.xml
ファイルに追加します。<beans> <alternatives> <class>com.acme.MockTranslatingWelcome</class> </alternatives> </beans>
結果
元の実装の代わりに代替実装が使用されます。