CDI-オブザーバーがイベントを観察すると、発信者に通知されますか?

StackOverflow https://stackoverflow.com/questions/3844596

  •  27-09-2019
  •  | 
  •  

質問

CDIを使用していますが、オブザーバーがイベントを監視した、または監視しなかったことが発信者に通知される方法を知りたいです。そのイベントにオブザーバーが行動しない場合、私は何かをしたいと思います。発信者に通知されるというヒントがあったことを除いて、これがドキュメントのどこにも文書化されていないようです。

ありがとう

ウォルター

役に立ちましたか?

解決

発信者に通知されるとは思いません(実際にはオブザーバーパターンとは異なります)。ただし、次の方法でこれを回避することができます:

  • イベントオブジェクトの1つであるprivate boolean consumedのフィールドを作成し、それが消費される場合はtrueに設定できます。次に、(イベントは同期的に処理されます)イベントプロデューサーでその変数をチェックします。

  • イベントプロデューサーによって監視されるオブザーバーからの新しいイベントの起動

  • 疎結合の利点をなくしたい場合で、イベントプロデューサーがどれであるかを正確に知っている場合は、それをすべてのリスナーにジェネラコダイスタグコード化して、メソッドを呼び出させることができます

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