質問

ということかしてインターフェースと呼ばれ SocialNetworkService, と実装- TwitterService, FacebookServiceFriendFeedService.

私は、私の管理ビーンはどのwebコンポーネントを受け取るメッセージをシェアしたいところが社会的ネットワークてみました:

@Inject private List<SocialNetworkService> socialNetworkServices;

こんな作業の展開エラー)。(または @Any 予選と同様の結果)

であるので、注入リストのすべて又は一部)の実装インタフェース?

ピックアップしました。ルール指定された入射点のないものを一つ以上を可能に。思いを実現できることによりプロデューサーを製造する、リストの使用 Instance<SocialNetworkService>, が、どうしよう、ちょっと先にもこの課題です。

役に立ちましたか?

解決

合わせての試みとの回答から、溶接フォーラム:

@Inject @Any
private Instance<SocialNetworkService> services;

InstanceIterable, なのでそれが可能な利用のための各ループを実行します。の @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イベントに耳を傾けます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top