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 的优势在于它提供了更好的方面(aspect)作为独立单元的感受,支持比 XML 语法更多的功能,并且与 AspectJ 本身兼容(相同的方面既可以用于 Spring,也可以用于 AspectJ)。

...

最终,支持“如果可以,就使用 @AspectJ”的决定性论据是后两者:更丰富的功能集和更顺畅地迁移到 AspectJ 的路径。

Adrian 关于将方面视为切入点(pointcuts)和通知(advices)的统一单元的评论,确实引起了我的共鸣。我认为 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 社区所有即将举行的活动。

查看所有