Spring AOP 入门:注解与 XML 配置全解析
1. 引言
在软件开发中,面向对象编程(OOP)虽然强大,但也存在一些局限性。而面向切面编程(AOP)则为解决这些问题提供了有效的手段,尤其是在实现阶段。本文将详细介绍 Spring AOP 的相关概念、组件以及如何使用注解和基于 XML 模式的配置来实现 AOP 功能。
2. Spring AOP 基础概念
2.1 Aspect(切面)
Aspect 是面向切面编程的功能单元。在 Spring 1.x 版本中,切面通过实现 Advisor 接口的类来实现,Advisor 是将通知(Advice)和切入点(Pointcut)结合的类。从 2.x 版本开始,借助 AspectJ 的注解,切面可以是带有 @Aspect
注解的 Java 类。
2.2 Pointcut(切入点)
Pointcut 是用于选择连接点(Joinpoint)的表达式,它可以是一组连接点的集合,用于定义需要执行的通知。通过定义切入点,可以控制应用程序中的对象,在通知应用的点上进行操作。由于 Spring 定义了方法调用连接点,因此类上所有可调用的方法都是连接点。
以下是一些切入点的示例:
- 以特定前缀开头的方法(如 getter 和 setter)
- 位于特定包中的方法(如 org.springaop.domain.*
)
- 返回特定类型输出的方法(如 public MyClass get*(...)
)
- 上述三种示例的任意组