spring AOP加载顺序 和 循环依赖问题

aop常用注解

在这里插入图片描述spring 4 springboot1 顺序
环绕
前置
后置
返回后通知。

出现异常后执行顺序:
环绕
前置
后置
afterThrowing

spring 5 springboot 2.3
环绕
前置
返回后通知
后置
环绕

异常执行顺序:
环绕
前置
afterThrowing
后置

spring循环依赖

循环依赖指的是 A 依赖于B ,B又依赖于A。
有点类似循环链表。
spring是无法通过构造器去解决循环依赖问题。
需要通过set方式注入。
spring中sigleton 支持解决循环依赖问题。proto不支持
当使用多例的时候会报循环依赖问题。
spring通过三级缓存去解决循环依赖问题。

defaultSingletonBeanRegistry

在这里插入图片描述singletonObjects 一级缓存 并发
earlySingletonObjects 二级缓存
singletonFactories 三级缓存

主要区别就是 value的属性类型 三级缓存是 Objectfactory
在这里插入图片描述单例的bean通过三级缓存提前暴露解决循环依赖的问题,非单例模式情况下,没有缓存通过直接创建得到。所以不会解决循环依赖问题

猜你喜欢

转载自blog.csdn.net/weixin_43203363/article/details/115438185
今日推荐