此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Framework 6.2.10! |
Spring AOP 功能和目标
Spring AOP 是用纯 Java 实现的。无需特殊编译 过程。Spring AOP 不需要控制类加载器层次结构,因此 适用于 Servlet 容器或应用程序服务器。
Spring AOP 目前仅支持方法执行连接点(建议执行 Spring bean 上的方法)。未实现现场拦截,但支持 可以在不破坏核心 Spring AOP API 的情况下添加字段拦截。如果您需要 要建议字段访问和更新连接点,请考虑使用诸如 AspectJ 之类的语言。
Spring AOP 的 AOP 方法与大多数其他 AOP 框架不同。目的是 不提供最完整的AOP实现(虽然Spring AOP相当 有能力)。相反,目的是在 AOP 实施和 Spring IoC,帮助解决企业应用中的常见问题。
因此,例如,Spring 框架的 AOP 功能通常用于 与 Spring IoC 容器结合使用。使用普通 bean 配置方面 定义语法(尽管这允许强大的“自动代理”功能)。这是一个 与其他 AOP 实现的关键区别。有些事情你不能做 使用 Spring AOP 轻松或高效地建议非常细粒度的对象(通常, domain 对象)。在这种情况下,AspectJ 是最佳选择。但是,我们的 经验是,Spring AOP 为大多数问题提供了很好的解决方案 适用于 AOP 的企业 Java 应用程序。
Spring AOP 从不努力与 AspectJ 竞争提供全面的 AOP 溶液。我们认为,无论是基于代理的框架,如 Spring AOP,还是成熟的 像 AspectJ 这样的框架很有价值,它们是互补的,而不是在 竞争。Spring 将 Spring AOP 和 IoC 与 AspectJ 无缝集成,以启用 在一致的基于 Spring 的应用程序中 AOP 的所有用途 架构。此集成不会影响 Spring AOP API 或 AOP 联盟 应用程序接口。Spring AOP 保持向后兼容。有关 Spring AOP API 的讨论,请参阅下一章。
Spring Framework 的核心原则之一是非侵入性。这 是你不应该被迫引入特定于框架的类的想法,并且 与您的业务或域模型接口。但是,在某些地方,Spring 框架 确实为您提供了将特定于 Spring Framework 的依赖项引入 代码库。为您提供此类选项的基本原理是,在某些情况下,它 可能更容易阅读或编码某些特定的功能 一种方式。但是,Spring Framework(几乎)总是为您提供选择:您拥有 自由地做出明智的决定,选择最适合您的特定用途 案例或场景。 与本章相关的一个选择是 AOP 框架(和 选择哪个 AOP 样式)。您可以选择 AspectJ、Spring AOP 或两者兼而有之。你 还可以选择 @AspectJ 注释样式方法或 Spring XML 配置样式的方法。本章选择引入 首先@AspectJ式的方法不应被视为春季队的标志 更倾向于@AspectJ注释样式的方法,而不是 Spring XML 配置样式。 有关更多信息,请参阅选择要使用的 AOP 声明样式 完整讨论每种风格的优缺点。 |