春季活动与方面

dav*_*ooh 5 java events spring

我最近在Spring Framework中发现了事件处理,并且我想了解该特定工具的功能和用例。

乍一看,它们似乎与Aspects非常相似,但也许我没有看到全局。

事件是AOP的替代还是基于AOP?在某些情况下,事件比方面更好吗?

Zir*_*con 5

事件处理和方面的目的相似,但设计不同。一个不能替代另一个。我将在此处总结一些差异,但是可能会有益于您进一步探索这两个主题以了解差异。

AOP为我们提供了一种将逻辑注入代码中的连接点的方法。这意味着跨这些点的程序将执行相同的逻辑。Spring具有功能强大的AOP工具,使我们能够将代码注入到应用程序的许多区域和执行点中。

事件处理为我们提供了一种在某些因素影响应用程序上下文或处理请求时通知侦听器的方法。因为侦听器正在执行逻辑,所以我们能够在应用程序的各个部分执行不同的逻辑。但是,与Aspects不同,“插入点”受到更多限制,因为它们仅涉及HTTP请求或应用程序上下文。

从行为的角度来看,方面和事件是相反的。当达到逻辑点时,方面将注入一段代码。相反,响应于逻辑点,执行一段代码。一个方面在整个应用程序中处理了许多次,而事件由任意数量的基于事件执行代码的侦听器处理。

当服务HTTPRequest时,方面可以与事件互换的唯一实际情况是执行代码。该方面将在与服务方法相关的连接点处注入,而事件将由侦听器处理,该侦听器将在服务请求时得到通知。

在我看来,AOP比侦听器模式强大得多,但也不动态。