概念:AOP既面向切象编程。是一种编程范式,主要用于将横切关注点从业务逻辑中脱离出来,以此来提高代码的模块化,和可维护性。
核心概念:
- 横切关注点(Cross-Cutting Concerns):多个模块中重复出现的与业务逻辑无关但又必须使用的代码,如日志记录,事务管理,权限校验
- 切面(Aspect):用于封装横切关注点的类。并且被
@Aspect注释。如:日志切面主要负责在方法前后添加日志记录。 - 通知(Advice):切面在特定切入点中执行的代码。有以下类型
- 前置通知(Before):方法执行前
- 后置通知(After):方法执行后(无论是否异常)
- 返回通知(After Returning):方法正常返回后
- 异常通知(After Throwing):方法抛出异常后
- 环绕通知(Around):包围方法执行,可自定义执行时机
- 切入点(Pointcut):定义通知应该在哪些连接点(方法)上执行,通常表达式(如 AspectJ 语法)
execution(* com.example.service.*.*(..))匹配所有服务层方法。 - 连接点(Join Point):程序执行过程中的特定点(如方法调用,异常抛出),是切入点的候选位置
- 织入(Weaving):将切面逻辑切入到目标对象的过程