SpringAOP介绍

Spring AOP 使面向方面的编程更容易。在本篇中,您将学习使用 Spring AOP 进行面向方面的编程。面向方面的编程通过提供一种不同的方式来构建代码,从而增强了面向对象的编程概念。 Spring AOP 在内部使用 AspectJ,我们将在本篇中使用带有 AspectJ 注释的 Spring。
什么是 AOP?
Aspect 只是代码(类、方法等)中存在的一个常见特性。您认为重复的代码或逻辑可以有更好的结构来管理,而不是将其分散在不同的类和方法中。
例如,跟踪性能矩阵(Profiling)的代码、日志记录代码、数据库事务管理代码等都是方面的好例子。像这样的特性称为横切关注点。
面向方面的编程 (AOP) 建议您将横切关注点抽象并封装到单独的代码中。
什么是 Spring AOP?
Spring AOP 是 Spring 的重要组件之一,它补充了 Spring IoC 以提供非常强大的中间件解决方案。 Spring AOP 在内部使用 AspectJ,你也可以扩展 AOP API。
AOP 在 Spring Framework 中用于:
1、提供声明性企业服务——例如事务管理。
2让用户实现自定义方面,用 AOP 补充他们对 OOP 的使用。
Spring AOP 术语
AOP 术语有点困扰,让我们开始学习它们。 Spring 没有添加任何自己的术语,这些都是纯 AOP 概念。
1、Aspect – 横切关注点被写入/重构到一个单独的类中并使用@Aspect 进行注释。
2、Join Point——在 Spring AOP 中,连接点总是代表一个方法执行。这是应用Aspect的点。
3、Advice – 这是Aspect在特定连接点采取的行动。 Spring 将通知建模为拦截器,并在连接点周围维护一系列拦截器。 Spring 中包含不同类型的建议。
- Before advice –
@Before
- Around advice –
@Around
- After returning –
@AfterReturning
- After throwing –
@AfterThrowing
- After (finally) advice –
@After
4、Pointcut(切入点)——它是一个匹配零个或多个连接点的表达式。 Advice 与切入点表达式相关联,并在与切入点匹配的任何连接点处运行。
5、Target Object(目标对象) – 应用建议的对象。 Spring AOP 使用运行时代理,因此该对象始终是代理对象。
6、AOP 代理——由 AOP 框架创建的用于实现方面的对象。它使用 JDK 动态代理或 CGLIB 代理创建。
7、Weaving(编织)——它将方面与其他应用程序类型或对象链接起来以创建建议对象。这可以在编译时(例如,使用 AspectJ 编译器)、加载时或运行时完成。 Spring AOP 与其他纯 Java AOP 框架一样,在运行时执行编织。
8、introduction – Spring AOP 允许您向任何建议的对象引入新接口(和相应的实现)。介绍称为类型间声明。
总结:
AOP 是对 Spring 的一个很好的补充,尤其是 Spring Security 以简单的方式为我们提供了惊人的功能。有一些问题需要解决和解决。必须使用适当的指南在更大的项目中实现 AOP,否则调试可能会变得很痛苦。此外,使用 AOP 元素的建模软件应用程序变得难以在 UML 中表示。如果您正在考虑下一代 Java 编程,例如GraalVM 原生构建,AOP 不是一个好主意。