Spring 简明教程

AOP with Spring Framework

Spring Framework 的关键组件之一是 Aspect oriented programming (AOP) 框架。面向方面编程将程序逻辑细分为称为关注点的不同部分。跨越应用程序多个点的函数称为 cross-cutting concerns ,这些跨领域关注点在概念上与应用程序的业务逻辑分离。记录、审核、声明式事务、安全、缓存等方面有很多常见的例子。

面向对象编程中模块化的关键单元是类,而在面向方面编程中,模块化的单元是方面。依赖注入可帮助你解除应用程序对象之间的耦合,面向方面编程可帮助你解除跨领域关注点与它们所影响的对象之间的耦合。面向方面编程类似于 Perl、.NET、Java 和其他编程语言中的触发器。

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

AOP Terminologies

在我们开始使用面向方面编程之前,让我们熟悉面向方面编程的概念和术语。这些术语并非特定于 Spring,而是与面向方面编程相关。

Sr.No

Terms & Description

1

Aspect 此模块有一组 API,提供跨领域要求。例如,日志记录模块将被称为用于日志记录的面向方面编程方面。应用程序可以具有任意数量的方面,取决于要求。

2

Join point 此模块表示应用程序中的某个点,你可以在这里插入面向方面编程方面。也可以说,这是应用程序中使用 Spring 面向方面编程框架执行操作的实际位置。

3

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

4

Pointcut 这是一组一个或多个联接点,应在其中执行通知。你可以使用表达式或模式指定切入点,如我们在面向方面编程示例中所看到的。

5

Introduction 引入允许你向现有类添加新方法或属性。

6

Target object 由一个或多个方面告知的对象。此对象将始终是一个代理对象,也称为告知对象。

7

Weaving 编织是将方面与其他应用程序类型或对象链接以创建告知对象的过程。此操作可以在编译时、加载时或运行时完成。

Types of Advice

@Spring 方面可使用如下所述的五种建议进行处理:

Sr.No

Advice & Description

1

before 在方法执行前运行建议。

2

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

3

after-returning 仅在方法成功完成时,才在方法执行后运行建议。

4

after-throwing 仅在方法通过抛出异常而退出时,才在方法执行后运行建议。

5

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

Custom Aspects Implementation

Spring 支持 @AspectJ annotation style 方法和 schema-based 方法来实现自定义方面。这两个方法在以下部分中已作了详细说明。

Sr.No

Approach & Description

1

XML Schema based 方面使用常规类和基于 XML 的配置来实现。

2

@AspectJ based @AspectJ 指代一种将方面声明为常规 Java 类的样式,对其使用 Java 5 注释进行注释。