4.AOP核心概念
4.1.切面 (Aspect)
定义:切面是横切关注点的模块化实现,这个关注点可能会横切多个对象,它包含一组相关的通知和切点,共同定义了切面的行为和应用范围。它与类相似,只是两者的关注点不一样,类是对物体特征的抽象,而切面横切性关注点的抽象。
@Aspect
@Component
public class AspectAop {
// 切点
// 通知
}
4.2.连接点 (Join Point)
-
定义:连接点是指程序执行过程中某个特定点,如方法调用、字段访问或异常抛出等。在 Spring AOP 中,连接点通常是方法执行的开始或结束。
-
列举一些常见的连接点类型。
-
方法执行 (
execution(* com.example.service.*.*(..))
):这是 Spring AOP 最常用的连接点类型。 -
构造器调用 (
execution(* com.example.service.*(..))
):构造器的调用也可以被视为连接点。 -
异常抛出 (
throwing(pointcut, ..)
):当方法抛出异常时发生的连接点。
-
4.2.切点 (Pointcut)
-
定义:切点是一组连接点的集合,它定义了切面应该在哪些连接点应用。 切点通常是通过匹配规则来指定的,例如匹配特定的方法签名。
-
介绍如何使用表达式来指定切点。
execution(* com.example.service.*.*(..))
:这个切点表示所有com.example.service
包下的所有类的所有方法。@annotation(com.example.MyAnnotation)
:这个切点表示所有被MyAnnotation
注解的方法。
execution(* com.yuan.aop.GymAop.*(..))