質問
ということかしてインターフェースと呼ばれ SocialNetworkService
, と実装- TwitterService
, FacebookService
や FriendFeedService
.
私は、私の管理ビーンはどのwebコンポーネントを受け取るメッセージをシェアしたいところが社会的ネットワークてみました:
@Inject private List<SocialNetworkService> socialNetworkServices;
こんな作業の展開エラー)。(または @Any
予選と同様の結果)
であるので、注入リストのすべて又は一部)の実装インタフェース?
ピックアップしました。ルール指定された入射点のないものを一つ以上を可能に。思いを実現できることによりプロデューサーを製造する、リストの使用 Instance<SocialNetworkService>
, が、どうしよう、ちょっと先にもこの課題です。
解決
合わせての試みとの回答から、溶接フォーラム:
@Inject @Any
private Instance<SocialNetworkService> services;
Instance
具 Iterable
, なのでそれが可能な利用のための各ループを実行します。の @Any
予選が必要です。
もうこのイベントシステム:
- の作成
MessageEvent
(すべてを含むに関する情報をメッセージ) の代わりに注入リストは、ソーシャルネットワークは、単に入またはイベント:
@Inject private Event<MessageEvent> msgEvent;
火:
msgEvent.fire(new MessageEvent(message));
を観察するイベントの全てのサービスにかかわらずインタフェース、可能性のあるプラス):
public void consumeMessageEvent(@Observes MessageEvent msgEvent) {..}
他のヒント
私は、JSR-299の仕様を見ていたし、あなたが簡単にやりたいことができると私は、この特殊なケースのためのコードを提供するために、溶接の経験を十分に持っていないことは思えません。
しかし、章12.3「ビーンディスカバリー」に基づいて、あなたが代替の@として実装を宣言することができるかもしれない(避けるために、複数の実装に文句を言うWELD)とSocialNetworkServiceの実装を見ている時に収集するProcessBeanイベントに耳を傾けます。