【发布时间】:2015-10-31 19:05:31
【问题描述】:
研究 Spring 事件处理程序我看不出实现我们的事件侦听器有什么好处,我的意思是,对象 A 直接同步调用对象 B 或对象 A 有什么区别,使用一个侦听器和一个事件处理程序,发布然后调用对象 B。可能是关于一些架构增益或获得低耦合?真正的收获是什么? tks。
【问题讨论】:
标签: java spring events listener
研究 Spring 事件处理程序我看不出实现我们的事件侦听器有什么好处,我的意思是,对象 A 直接同步调用对象 B 或对象 A 有什么区别,使用一个侦听器和一个事件处理程序,发布然后调用对象 B。可能是关于一些架构增益或获得低耦合?真正的收获是什么? tks。
【问题讨论】:
标签: java spring events listener
正如您所提到的,这种方法降低了类之间的耦合,因为事件的发送者或接收者彼此不知道。
以防万一,将这种方法用于所有方法调用并不理想,但当操作并不真正相关时,它会很有意义。
例如,想象以下场景:当用户完成注册后,我们会向他/她发送一封欢迎电子邮件。
在这种情况下,将注册过程与发送电子邮件结合起来并不是很好。但是,如果您在 UserRegistered 事件上有一个侦听器,则可以从该事件中触发电子邮件。我真的很喜欢这种构建应用程序的方式,因为它使它们更加解耦,但是,根据您使用的事件调度程序,理解流程变得更加困难(例如,如果事件调度程序接收到一个字符串作为事件名称和一个带有数据,则很难轻松获得所有消费者的列表)。
一个重要的方面(或者我应该说气味)是 2 个侦听同一事件的侦听器不应该依赖于他们使用事件的顺序。这适用于所有事件分发器,而不仅仅是 Spring 实现的分发器。
【讨论】: