🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
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 Framework的AOP功能通常与Spring IoC容器一起使用。 使用普通bean定义语法配置切面(尽管这允许强大的“自动代理”功能):这是与其他AOP实现的重要区别.使用Spring AOP有些事情是没办法做到的,例如建议非常细粒度的对象(例如域对象):在这种情况下,AspectJ是最佳选择。 但是,我们的经验是,Spring AOP为企业Java应用程序中的大多数问题提供了出色的解决方案。 Spring AOP永远不会尝试与AspectJ竞争,以提供全面的AOP解决方案。 我们相信像Spring AOP这样的基于代理的框架和像AspectJ这样的完整框架都很有价值,而且它们是互补的,而不是竞争。 Spring将Spring AOP和IoC与AspectJ无缝集成,以便在一致的基于Spring的应用程序架构中满足AOP的所有使用需求。 此集成不会影响Spring AOP API或AOP Alliance API:Spring AOP保持向后兼容。 有关Spring AOP API的讨论,请参阅以下章节。 >Spring框架的核心原则之一是非侵入性; 这是因为您不应该被迫在您的业务/域模型中引入特定于框架的类和接口。 但是,在某些地方,Spring Framework确实为您提供了将Spring Framework特定的依赖项引入代码库的选项:为您提供此类选项的基本原理是因为在某些情况下,它可能更容易阅读或编写某些特定的部分 以这种方式的功能。 Spring Framework(几乎)总是为您提供选择:您可以自由决定哪种选项最适合您的特定用例或场景。 > >与本章相关的一个选择是选择哪种AOP框架(以及哪种AOP样式)。 您可以选择AspectJ和/或Spring AOP,也可以选择@AspectJ注释样式方法或Spring XML配置样式方法。 本章首先选择引入@ AspectJ风格的方法,这一事实不应被视为Spring团队倾向于采用Spring XML配置风格的@AspectJ注释风格方法。 >与本章相关的一个选择是选择哪种AOP框架(以及哪种AOP样式)。 您可以选择AspectJ和/或Spring AOP,也可以选择@AspectJ注解样式方法或Spring XML配置样式方法。 本章首先选择引入@ AspectJ风格的方法,这一事实不代表Spring团队偏爱@AspectJ注释风格比Spring XML配置风格好。