研究Spring事件处理程序我看不出实现我们的事件监听器有什么好处,我的意思是,对象A调用对象B有什么区别直接同步对象A,使用一个Listener和一个EventHandler,发布然后调用对象B.可能是关于一些架构增益或低耦合?这是真正的收获? TKS。
答案 0 :(得分:0)
正如您所提到的,这种方法降低了类之间的耦合,因为事件的发送者或接收者彼此不了解。
以防万一,将这种方法用于所有方法调用并不理想,但是当操作不是真正相关时,这很有意义。
例如,假设以下情形:当用户完成注册时,我们会向他/她发送欢迎电子邮件。
在这种情况下,将注册过程与发送电子邮件相结合并不是很好。但是,如果您在 UserRegistered 事件上有一个监听器,则可以从该事件中触发该电子邮件。我非常喜欢这种构建应用程序的方式,因为它使它们更加分离,但是,根据您使用的事件调度程序,理解流程变得更加困难(例如,事件调度程序接收字符串作为事件名称和带有数据,然后很难轻松获得所有消费者的清单。)
一个重要的方面(或者我应该说是气味)是2个正在侦听同一事件的听众不应该依赖于他们消费事件的顺序。这适用于所有事件调度程序,而不仅仅是Spring实现的调度程序。