事件处理和方面的目的相似,但设计不同。一个不能替代另一个。我将在此处总结一些差异,但是可能会有益于您进一步探索这两个主题以了解差异。
AOP为我们提供了一种将逻辑注入代码中的连接点的方法。这意味着跨这些点的程序将执行相同的逻辑。Spring具有功能强大的AOP工具,使我们能够将代码注入到应用程序的许多区域和执行点中。
事件处理为我们提供了一种在某些因素影响应用程序上下文或处理请求时通知侦听器的方法。因为侦听器正在执行逻辑,所以我们能够在应用程序的各个部分执行不同的逻辑。但是,与Aspects不同,“插入点”受到更多限制,因为它们仅涉及HTTP请求或应用程序上下文。
从行为的角度来看,方面和事件是相反的。当达到逻辑点时,方面将注入一段代码。相反,响应于逻辑点,执行一段代码。一个方面在整个应用程序中处理了许多次,而事件由任意数量的基于事件执行代码的侦听器处理。
当服务HTTPRequest时,方面可以与事件互换的唯一实际情况是执行代码。该方面将在与服务方法相关的连接点处注入,而事件将由侦听器处理,该侦听器将在服务请求时得到通知。
在我看来,AOP比侦听器模式强大得多,但也不动态。