spring aop底层原理
1、创建过程
在解析配置类上的@EnableAspectAutoProxy的时候,会向IOC容器注册一个AnnotationAwareAspectJAutoProxyCreator(实现了BeanPostProcessor)的bean定义,在首次执行AnnotationAwareAspectJAutoProxyCreator.postProcessBeforeInstantiation()的时候会解析所有带有@Aspect的切面类,为每个advice方法和切点创建一个advisor,并将这个advisors集合缓存起来。在bean初始化后执行bean的后置处理器时,将advisor从之前的缓存中拿出来和当前bean 根据切点表达式进行匹配,匹配成功则为当前bean创建代理对象
2、调用过程
采用了责任链的设计模式。将advisor里的advice转化成统一的拦截器,使用责任链进行递归调用

浙公网安备 33010602011771号