使用Spring应用程序事件发布有什么好处?
我在一个使用一些Spring应用程序事件发布的Web应用程序上工作,我想知道它的优势是什么?为什么不直接为事件处理程序中发生的所有事情创建一个服务调用,然后调用该服务来代替发布事件呢?onApplicationEvent
我在一个使用一些Spring应用程序事件发布的Web应用程序上工作,我想知道它的优势是什么?为什么不直接为事件处理程序中发生的所有事情创建一个服务调用,然后调用该服务来代替发布事件呢?onApplicationEvent
使用Spring的事件发布(观察者模式 - http://en.wikipedia.org/wiki/Observer_pattern)的一个优点是组件是松散耦合的 - 发布者和订阅者之间没有直接耦合。当然,它们都依赖于Spring Event API,但不依赖于彼此。这样就可以通过添加/删除订阅者来扩展应用程序,而不会影响其他订阅者(假设您的订阅者不相互依赖)。
另一方面,正如您可能已经发现的那样,它可能会使调试更加棘手,因为它在事件的源和整体结果之间引入了一定程度的间接关系。
是的,您通常可以将事件替换为直接 API 调用。在以下情况下使用事件很合适:
在回答问题的一部分时,为什么不创建一个服务呼叫;因为其他人已经编写了代码,记录并对其进行了测试。