# 什么是springAOP?

# AOP理解回答

AOP是面向切面编程。是在不改变业务代码前提下把哪些通用逻辑抽出来,统一处理的一种思想。

比如:日志(ruoyi框架有应用)、事务、安全校验、redis的lua脚本限流(ruoyi框架有应用)这些都和业务没有关系但是很多方法都得实现。写一遍又一遍太蠢了。

AOP的核心思想是:用代理在方法调用的前后自动插入逻辑。举例子:你有一堆addXxxx()方法。现在想统一记录入参与出餐日志不用每一个地方都手写打印。springAOP会在它外面一层代理。调用的其实就是代理方法。他先执行日志逻辑,再去调用真正的addXxxx()方法。——这个就是切面的本质。

# AOP的核心概念

切面:

切面是功能模块,比如日志切面。

通知:

通知是执行时机,比如Before、After。

连接点:

连接点是程序所有能插刀的地方。比如方法执行、异常抛出。

切入点:

切入点是你选中要插刀的地方。比如:拦截service包下的所有方法。

织入:

织入就是把这段逻辑塞进去的过程。

最后:

springAOP用的是动态代理底层用JDK或者cglib在运行时织入逻辑。还有一个aspect的静态织入。是在编译期或者类加载期织入。

# AOP的必知必会

  1. AOP是面向切面编程,是对面向OOP编程的一种补充。不是替代。
  2. AOP底层靠代理机制织入逻辑,不同框架的织入时机不一样。
  3. springAOP是运行时动态代理。(分JDK或cglib)。AspectJ是编译期静态织入。
Last Updated: 4/3/2026, 6:47:37 AM