Spring 2.0 中的 AOP 配置选择

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

有很多理由喜欢在 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 社区中所有即将举行的活动。

查看全部