CDI-オブザーバーがイベントを観察すると、発信者に通知されますか?
-
27-09-2019 - |
質問
CDIを使用していますが、オブザーバーがイベントを監視した、または監視しなかったことが発信者に通知される方法を知りたいです。そのイベントにオブザーバーが行動しない場合、私は何かをしたいと思います。発信者に通知されるというヒントがあったことを除いて、これがドキュメントのどこにも文書化されていないようです。
ありがとう
ウォルター
解決
発信者に通知されるとは思いません(実際にはオブザーバーパターンとは異なります)。ただし、次の方法でこれを回避することができます:
-
イベントオブジェクトの1つである
private boolean consumed
のフィールドを作成し、それが消費される場合はtrue
に設定できます。次に、(イベントは同期的に処理されます)イベントプロデューサーでその変数をチェックします。 -
イベントプロデューサーによって監視されるオブザーバーからの新しいイベントの起動
-
疎結合の利点をなくしたい場合で、イベントプロデューサーがどれであるかを正確に知っている場合は、それをすべてのリスナーにジェネラコダイスタグコード化して、メソッドを呼び出させることができます
所属していません StackOverflow