Spring 面向切面编程(AOP)



  • 面向切面编程(AOP)

    Spring框架的关键组件之一是面向切面的编程(AOP)框架。面向切面的编程需要将程序逻辑分解为称为“关注点”的不同部分。跨应用程序多个点的功能称为跨领域关注点,这些跨领域关注点在概念上与应用程序的业务逻辑分开。在日志记录,审计,声明性事务,安全性,缓存等切面,存在各种常见的良好示例。OOP(面向对象编程)中模块化的关键单元是类,而在AOP中模块化是切面。依赖注入可帮助您将应用程序对象彼此分离,而AOP可帮助您将跨领域关注点与其影响的对象分离。AOP就像Perl,.NET,Java等编程语言中的触发器一样。Spring AOP模块提供了拦截器来拦截应用程序。例如,执行方法时,可以在执行方法之前或之后添加其他功能。
  • AOP术语

    在开始使用AOP之前,让我们熟悉AOP的概念和术语。 这些术语并非特定于Spring,而是与AOP相关。
    概念 描述
    Aspect (切面) 该模块具有一组提供交叉需求的API。 例如,日志记录模块将被称为AOP切面的日志记录。 根据需求,一个应用程序可以具有许多切面。
    Join point(切入点) 这表示您的应用程序中可以插入AOP切面的一点。 您还可以说,这是应用程序中使用Spring AOP框架执行操作的实际位置。
    Advice 这是在方法执行之前或之后要执行的实际操作。 这是Spring AOP框架在程序执行期间调用的实际代码。
    Pointcut 这是一组应执行建议的一个或多个连接点。 您可以使用表达式或模式来指定切入点,如我们在AOP示例中所见。
    Introduction 简介允许您向现有的类添加新的方法或属性。
    Target object 一个或多个切面建议该对象。 该对象将始终是代理对象,也称为建议对象。
    Weaving 将方面与其他应用程序类型或对象链接起来以创建建议的对象的过程。这可以在编译时,加载时或运行时完成。
  • Advice类型

    Spring切面可以使用以下五种Advice
    类型 描述
    before 在方法执行之前运行通知。
    after 不管结果如何,在方法执行之后运行advice。
    after-returning 仅当方法成功完成时,才在方法执行后运行通知。
    after-throwing 仅当方法通过抛出异常退出时,才在方法执行后运行通知。
    around 在调用被建议的方法之前和之后运行通知。
  • 自定义切面接口

    Spring支持@AspectJ注解样式方法和基于模式的方法来实现自定义切面。 以下各节详细说明了这两种方法。
    切面 描述
    基于 XML 使用常规类以及基于XML的配置来实现方面。
    基于 @AspectJ @AspectJ是一种将切面声明为带有Java 5注解的常规Java类的样式。