春季活动与Aspects

时间:2016-07-18 13:00:52

标签: java spring events

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

乍一看,他们看起来与Aspects非常相似,但也许我看不到大局。

事件是AOP的替代品还是基于它?是否存在事件优于Aspects的用例?

1 个答案:

答案 0 :(得分:2)

事件处理和方面的目的相似,但设计不同。一个不是另一个的替代品。我将在这里总结一些差异,但是你可以进一步探索这两个主题,以便看到差异。

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

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

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

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

在我看来,AOP比听众模式更强大,但也不像动态。