Spring 框架的 AOP


Spring框架的关键组件之一是面向方面编程(AOP)框架。面向方面的编程需要将程序逻辑分解为不同的部分,称为所谓的关注点。跨越应用程序多个点的功能称为横切关注点,这些横切关注点在概念上与应用程序的业务逻辑是分开的。日志记录、审计、声明性事务、安全性、缓存等方面有各种常见的好例子。

OOP 中模块化的关键单元是类,而 AOP 中模块化的单元是方面。依赖注入可以帮助您将应用程序对象彼此解耦,AOP 可以帮助您将横切关注点与其影响的对象解耦。AOP 就像 Perl、.NET、Java 等编程语言中的触发器。

Spring AOP 模块提供拦截器来拦截应用程序。例如,当执行方法时,您可以在方法执行之前或之后添加额外的功能。

AOP 术语

在开始使用 AOP 之前,让我们先熟悉一下 AOP 概念和术语。这些术语并不是 Spring 特有的,而是与 AOP 相关。

先生编号 条款和说明
1

方面

该模块具有一组提供横切需求的 API。例如,日志记录模块将被称为用于日志记录的 AOP 方面。根据需求,应用程序可以具有任意数量的方面。

2

加入点

这代表您的应用程序中可以插入 AOP 方面的点。您也可以说,它是应用程序中使用 Spring AOP 框架执行操作的实际位置。

3

建议

这是方法执行之前或之后要采取的实际操作。这是 Spring AOP 框架在程序执行期间调用的实际代码段。

4

切入点

这是一组应在其中执行建议的一个或多个连接点。您可以使用表达式或模式指定切入点,正如我们将在 AOP 示例中看到的那样。

5

介绍

简介允许您向现有类添加新方法或属性。

6

目标对象

被告知的对象由一个或多个方面组成。该对象始终是代理对象,也称为建议对象。

7

编织

编织是将方面与其他应用程序类型或对象链接起来以创建建议对象的过程。这可以在编译时、加载时或运行时完成。

建议类型

Spring 方面可以使用以下五种建议 -

先生编号 建议和说明
1

在方法执行之前运行通知。

2

在方法执行后运行建议,无论其结果如何。

3

回国后

仅当方法成功完成时,才在方法执行后运行通知。

4

投掷后

仅当方法通过抛出异常退出时,才在方法执行后运行通知。

5

大约

在调用建议方法之前和之后运行建议。

自定义方面实施

Spring支持@AspectJ注释风格方法和基于模式的方法来实现自定义方面。这两种方法已在以下各节中详细解释。

先生编号 方法与描述
1 基于 XML 模式

方面是使用常规类以及基于 XML 的配置来实现的。

2 基于@AspectJ

@AspectJ 指的是一种将切面声明为用 Java 5 注释进行注释的常规 Java 类的样式。