领先一步
VMware 提供培训和认证,助您加速进步。
了解更多正如大家所知,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 语义。