一、简单说 AOP 设计:
每个 Bean 都会被 JDK 或Cglib 代理。取决于是否有接口。
每个 Bean 有多个“方法拦截器”。拦截器分为两层,外层由 Spring 内核控制流程,内层拦截器是用户设置,就是 AOP。(创建代理时创建)
当代理方法被调用时,先经过外层,根据方法信息判断该执行哪些“内层拦截器”。内层就是职责连的设计。
AOP 分2 个部分:代理创建;调用。com.interface21.aop包下。
二、代理的创建
(1)创建代理工厂,需:拦截器数组(尾部再加默认拦截器,调最终目标方法),目标对象接口数组,目标对象。
(2)调getProxy方法时,根据接口数量大余 0 条件返回代理对象(JDK or Cglib)。
三、代理的调用
(1)对代理对象调用时,触发外层拦截器。
(2)根据配置信息,创建内层拦截器链。创建过程中,根据表达式判断,当前拦截是否匹配拦截器。(拦截器链是职责链模式)
(3)最后,触发尾部拦截器,调用目标方法,返回
网友评论