如果说IOC 是 Spring 的核心,那么 面向切面编程 AOP就是 Spring 另外一个最为重要的核心

AOP的定义

AOP (Aspect Orient Programming),直译过来就是 面向切面编程,AOP 是一种编程思想,是面向对象编程(OOP)的一种补充。

常用于

  • 事务
  • 日志
  • 安全
  • 异常处理

面向切面编程,实现在不修改源代码的情况下给程序动态统一添加额外功能的一种技术

AOP可以拦截指定的方法并且对方法增强,而且无需侵入到业务代码中,使业务与非业务处理逻辑分离,比如Spring的事务,通过事务的注解配置,Spring会自动在业务方法中开启、提交业务,并且在业务处理失败时,执行相应的回滚策略。

AOP术语

AOP核心概念

名称 说明
JoinPoint(连接点) 指那些被拦截到的点,在Spring 中,指可以被动态代理拦截目标类的方法。
Pointcut (切入点) 指要对哪些Joinpoint进行拦截,即被拦截的连接点。
Adive(通知) 指拦截到Joinpoint之后要做的事情,即对切入点 增强的内容
Target (目标) 指代理的目标对象
Weaving(植入) 指把增强代码应用到目标上,生成代理对象的过程。
Proxy(代理) 指生成的代理对象
Aspect(切面) 切点和通知的结合

Spring AOP 通知分类

通知类型 说明
before(前置通知) 通知方法在目标方法调用之前执行
after(后置通知) 指要对哪些Joinpoint进行拦截,即被拦截的连接点。
Adive(通知) 指拦截到Joinpoint之后要做的事情,即对切入点 增强的内容
Target (目标) 指代理的目标对象
Weaving(植入) 指把增强代码应用到目标上,生成代理对象的过程。
Proxy(代理) 指生成的代理对象
Aspect(切面) 切点和通知的结合