前回 の記事の続きです。
CDIの勉強(その2)
@Qualifierによる実装の指定
自分の場合、デプロイ時にエラーは生じず、そのままサーバー起動ができました。
よく調べてみると、Servletの @Inject アノテーションの部分で、以下のようなワーニングが出ていることに気づいた。
「Multiple beans are eligible for injection to the injection point [JSR-365 §5.2.2]」
ググってみると、どうやら インストールしている JBoss ToolsのCDIバリデーションツールが警告を出していることが分かった。
日本語に訳すと、「複数のBeanが注入ポイントへの注入の対象となる注入点に存在します。」とでも訳されるのでしょうか。
ここの部分について、わかりやすい解説がQiitaのこのページにありました。
組み込みの限定子については、省略。
@Producesの使い方
動的に Hello の適切な実装クラスを返してくれるようにする機能のために使用します。
こっちの方が分かりやすかったです。
@Alternative の使い方
代替のBeanとして、Mock用のBeanを使うやり方。
@Alternative をBeanの宣言をすることにより、代替のBeanであることを指し示し、
bean.xml にて、その使用を宣言する。@Producers が動的なBeanの入れ替えだったが、
この例の場合は、外部設定によるBeanの入れ替えが可能となる。
この機能を使うことで、呼出元の単体テストを簡単に実装することが可能なことに気づいた。
また自身の機能を作成する場合においても、機能を構成するための様々なサービスを提供するBeanで構成し、その実装についても、小さな機能を積み重ね、また階層化することにより、自身の単体テストも簡単に実装することができそうだ。
