私はいくつかのSpringアプリケーションイベントの公開を使用しているWebアプリケーションで作業していますが、私はそれの利点が何か不思議でしたか?イベントハンドラのonApplicationEventで発生したすべてのサービスコールを作成し、イベントを公開する代わりにそのサービスを呼び出すだけではどうですか。Springアプリケーションイベントパブリッシングを使用する利点は何ですか?
2
A
答えて
7
Springのイベントパブリッシング(オブザーバパターン - http://en.wikipedia.org/wiki/Observer_pattern)を使用する利点の1つは、コンポーネントが疎結合であることです。パブリッシャとサブスクライバ間の直接結合はありません。もちろん、どちらもSpringイベントAPIに依存しますが、お互いには依存しません。これにより、他の加入者に影響を与えずに加入者を追加/削除することで、アプリケーションを拡張することができます(加入者が互いに依存しないと仮定して)。
一方、見つかったように、イベントソースと全体的な結果との間にレベルの差が生じるため、デバッグがより難しくなります。
はい、通常、イベントを直接API呼び出しで置き換えることができます。あなたが将来的にイベントが
- :ときのイベントを使用すると良いフィットです電子メールを送信します(カスタムApplicationEventMulticasterを使用します)。
- システムがイベントをどのように処理するか。 AuthorizationFailureEventは、リスナーの結果に依存しません。
- ライブラリを作成しています(例: Spring Security、および直接API呼び出しはオプションではありません。
2
サービスコールを作成するだけではなく、他の誰かがすでにコードを書いており、それを文書化してテストしているからです。
関連する問題
- 1. Python 3を使用する利点/利点は何ですか?
- 2. Spring FrameworkでNamedParameterJdbcTemplateよりもJdbcTemplateを使用する利点は何ですか?
- 3. プロキシキャッチサーバーを使用する利点と欠点は何ですか?
- 4. springの代わりにthymeleaf jspを使用する利点は何ですか
- 5. 使用する利点何
- 6. neo4jを直接使用するだけで、Spring Data neo4jを使用する利点は何ですか?
- 7. TextBox上でRichTextBoxを使用する利点は何ですか?
- 8. メソッドシグネチャでジェネリックを使用する利点は何ですか?
- 9. MVVMLightでSimpleIoCを使用する利点は何ですか?
- 10. サプライヤをJavaで使用する利点は何ですか?
- 11. C#でインターフェイスを使用する利点は何ですか?
- 12. WebアプリケーションでEJBを使用する利点は何ですか?
- 13. wpfでWeb APIを使用する利点は何ですか?
- 14. pgbouncerでトランザクションプーリングを使用する利点は何ですか?
- 15. __iter __()でyieldを使用する利点は何ですか?
- 16. Pythonでcimportを使用する利点は何ですか?
- 17. ThreadPoolExecutorでWaterMarkExecutorを使用する利点は何ですか?
- 18. AWSでDockerを使用する利点は何ですか?
- 19. ErlangでRabbitMQを使用する利点は何ですか?
- 20. プライベートクラウドをデータセンターに使用する利点は何ですか?
- 21. Subversionを使用する利点は何ですか?
- 22. emacsオートフィルモードを使用する利点は何ですか?
- 23. FetchXmlを使用する利点は何ですか?
- 24. Animator.StringtoHash( "")を使用する利点は何ですか?
- 25. 名前空間を使用する利点は何ですか?
- 26. Redux over Reactを使用する利点は何ですか?
- 27. エラーバックを使用する利点は何ですか?
- 28. babel-plugin-react-intlを使用する利点は何ですか?
- 29. SFSafariViewControllerを使用する主な利点は何ですか?
- 30. Saxonを.netに使用する利点は何ですか?
haha、あなたは最初の部分(誰かがそれを書いている)を仮定することができますが、私は最後の2つ(ドキュメンテーションとテスト)を引き受けることはできません。春の場合は – stevebot
? – sourcedelica