Spring AOP提供了一个简单的AOP实现,以使用代理模式和装饰器模式实现横切关注点。它不被认为是一个完整的AOP解决方案,Spring能够应用于由Spring容器管理的bean 。html
Spring AOP是用纯Java实现的。不须要特殊的编译过程。Spring AOP不须要控制类加载器层次结构,所以适合在servlet容器或应用程序服务器中使用。spring
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为适合AOP的企业Java应用程序中的大多数问题提供了出色的解决方案。框架
Spring AOP从未努力与AspectJ竞争,以提供全面的AOP解决方案。咱们相信,基于代理的框架(如Spring AOP)和完整的框架(如AspectJ)都颇有价值,并且它们是互补的,而不是竞争。spa
Spring将Spring AOP和IoC与AspectJ无缝集成,以在一致的基于Spring的应用程序架构中实现AOP的全部使用。此集成不会影响Spring AOP API或AOP Alliance API。Spring AOP仍然向后兼容。代理