取得领先
VMware 提供培训和认证,以加速您的进步。
了解更多正如你们大多数人所知,Spring 2.0 的一大改进是添加了 AspectJ 切入点语言,并在总体上更好地与 AspectJ 集成。虽然我认为每个人都相信从长远来看这将是一个巨大的好处,但它也导致了一些问题。我们发现 Spring AOP 一直有一些行为,而 AspectJ 从来没有做过。
出现的一个大问题是前置增强的行为。如果您在 Spring 1.x 中使用过 Spring AOP,您可能知道 Spring 允许您在参数传递给目标方法之前更改参数值。您可能不知道的是,AspectJ 从未允许这种行为。
这对您(用户)意味着什么?这取决于您未来打算做什么。我们已经决定,如果您继续使用 AOP Alliance 接口进行 AOP,您将继续获得与以往相同的语义;没有任何改变。如果您将来使用 AspectJ 切入点语言,您将获得准确的 AspectJ 语义。如果您想使用 AspectJ 的切入点语言,但仍然想更改参数值,这是可能的,但您需要遵守 AspectJ 的语义,并使用环绕增强而不是前置增强。
所以最终,我们仍然设法实现了即插即用的目标,同时在适当的地方坚持 AspectJ 语义。