Spring 2.0 中的前置通知(Before Advice)

工程 | Ben Hale | 2006年9月5日 | ...

正如大家所知,Spring 2.0 的一大改进是增加了 AspectJ 切入点语言以及与 AspectJ 的更好集成。虽然我认为从长远来看,这会带来巨大的好处,但也导致了一些问题。我们发现 Spring AOP 始终具有某些 AspectJ 从未具有的行为。

出现的一个大问题是 Before advice 的行为。如果您在 Spring 1.x 中使用过 Spring AOP,您可能知道 Spring 允许您在将参数值传递给目标方法之前更改它们。您可能不知道的是,AspectJ 以前从未允许过这种行为。

这对您,也就是用户,意味着什么?嗯,这取决于您未来的计划。我们已经决定,如果您继续使用 AOP Alliance 接口进行 AOP,您将继续获得与以前相同的语义;一切都不会改变。如果您将来使用 AspectJ 切入点语言,您将获得准确的 AspectJ 语义。如果您想使用 AspectJ 的切入点语言但仍然想更改参数值,这是可能的,但您需要遵循 AspectJ 的语义并使用 Around advice 而不是 Before advice。

因此,最终,我们仍然实现了我们提供“即插即用”的替代方案的目标,同时在适当的情况下遵循 AspectJ 语义。


附注:这篇帖子是为了纪念已故的伟大的“Penc Smith”。如果您参加过 Interface21Core Spring 培训,您就会明白我的意思。如果不是,请在 The Spring ExperienceNo Fluff Just Stuff 活动中找到我,我将与您一同畅饮并讲述这个故事。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,助您加速进步。

了解更多

获得支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一份简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看所有