Spring 2.0 中 AOP 配置的选择

工程 | Ben Hale | 2006年8月3日 | ...

有很多理由让人热爱在Interface21工作,但最好的理由无疑是与业界领导者一起工作。例如,Spring 2.0 的一个主要关注点是改进 AOP 支持。我们添加了一个新的配置命名空间AspectJ 切点语言以及对@AspectJ 切面的支持。但这留下了一个重要的问题;在 Spring 2.0 中编写切面的首选方法是什么?作为 I21 的员工,我很幸运能直接从权威人士那里得到答案。

我向Interface21 的首席科学家、AspectJ 项目负责人Adrian Colyer 提出了这个问题,他的回答如下。

我一开始更喜欢 XML 语法,但最终还是加入了 @AspectJ 的阵营。当然,这两种方法都有其优缺点。XML 的优点是不使用注解,适用于所有 JDK 版本,并且可能对现有 Spring 用户来说感觉更熟悉。这些都是非常有说服力的理由。@AspectJ 的优点是它提供了更好的切面单元感,支持比 XML 语法更多的功能,并且与 AspectJ 本身兼容(相同的切面可以同时用于 Spring 和 AspectJ)。

...

最终,“如果可以,请使用 @AspectJ” 的胜利论点是后两者:更大的功能集和更平滑的 AspectJ 迁移路径。

Adrian 关于将切面视为切点和建议单元的评论确实引起了我的共鸣。我认为 Spring 将它们视为单独可配置的 bean 是 Spring AOP 和 AspectJ 之间最大的区别之一。

我认为,Spring 未来对 @AspectJ 形式的采用将成为用户的强大差异化因素。我认为,知道 Spring 的 AOP 现在与市场上主要的 AOP 框架 AspectJ 如此紧密地结合在一起,会让人感到安心。他们会感到安全,因为即使并非所有语法都能转换,但所有范例和概念都能转换。而且,@AspectJ 甚至可以在没有 Spring 的情况下工作,这很好。

我在文章开头就提到了能够获得这种输入信息是多么好,但我还是要提醒你,你也可以做到。如果有人在Spring 论坛上发布了这个问题,你也会得到同样的答案(而且可能由于关注的人更多,比我的电子邮件更快)。请记住,我们 Interface21 的所有员工都在努力支持用户和社区,所以请使用这个资源。

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加快您的进度。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

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

查看全部