开发者社区> 问答> 正文

如何解决Spring Bean的循环依赖?

如何解决Spring Bean的循环依赖?

展开
收起
gxx1 2022-04-01 02:41:19 730 0
1 条回答
写回答
取消 提交回答
  • Spring为了解决循环依赖,设置了三级缓存。

    一级缓存singletonObjects

    用于保存BeanName和创建bean实例之间的关系,beanName -> bean instance

    private final Map<String, Object> singletonObjects = new ConcurrentHashMap(256);

    二级缓存earlySingletonObjects

    保存提前曝光的单例bean对象

    private final Map<String, Object> earlySingletonObjects = new HashMap<>(16);

    三级缓存singletonFactories

    保存beanName和创建bean实例之间的关系。但是,bean在创建过程中,可以通过getBean方法获取到,是为了检测循环引用。

    通过上述的三种方法就可以解决spring的循环依赖,我们可以根据其进行应用。

    2022-04-01 02:42:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多