简单了解spring bean的循环引用

 更新时间:2019年08月15日 09:10:22   作者:yongan  
这篇文章主要介绍了简单了解spring bean的循环引用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

看过一次spring公开课,记录一下bean的循环引用问题。

问题:

public class IndexService{
  @Autowired
  IndexDao indexDao;
}
public class IndexDao{
  @Autowired
  IndexService indexService;
}

以上的实例中IndexService依赖IndexDao,IndexDao中依赖IndexService。

spring在bean的实例化过程:

先去创建IndexDao bean,

1.创建IndexDao实例,此时还没有IndexDao bean产生。

2.去配置IndexDao对象的属性,这个属性就是IndexService,在这个配置的过程中会先把自己(IndexDao)对象放到singleFactory中;

3.然后去查找IndexService bean去填充,发现单例池(专门存放bean)中没有,然后去singleFactory中去找,还是没有。

4.创建IndexService实例,此时还没有IndexService bean。

5.去配置IndexService对象的属性,这个属性就是IndexDao,在这个配置的过程中会先把自己(IndexDao)对象放到singleFactory中;

6.然后去查找IndexDao bean去填充,发现单例池中没有,然后去singleFactory中去找,发现有了。

7.然后把属性填充到IndexService中。

8.经过4,5,6,7后已经有了IndexService,并且此时属性IndexDao有值了,然后通过步骤3再将这个IndexService注入到IndexDao

9.然后继续完成IndexDao 后续的bean的初始化。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • MybatisPlus 主键策略之type=IdType.ASSIGN_ID等详解

    MybatisPlus 主键策略之type=IdType.ASSIGN_ID等详解

    雪花算法(雪花)是微博开源的分布式ID生成算法其核心思想就是:使用一个64位的长型的数字作为全局唯一ID,这篇文章主要介绍了MybatisPlus 主键策略(type=IdType.ASSIGN_ID等详解),需要的朋友可以参考下
    2024-04-04
  • Java中实现分布式定时任务的方法

    Java中实现分布式定时任务的方法

    这篇文章主要介绍了Java中实现分布式定时任务,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • SpringMVC中的DispatcherServlet详细解析

    SpringMVC中的DispatcherServlet详细解析

    这篇文章主要介绍了SpringMVC中的DispatcherServlet详细解析,DispatcherServlet也是一个Servlet,它也能通过Servlet的API来响应请求,从而成为一个前端控制器,Web容器会调用Servlet的doGet()以及doPost()等方法,需要的朋友可以参考下
    2023-12-12
  • 解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题

    解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题

    这篇文章主要介绍了解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 关于MyBatis模糊查询的几种实现方式

    关于MyBatis模糊查询的几种实现方式

    在实际项目中,我们会经常对数据做一些模糊查询的操作,这时候就需要利用到 like字段,那么在Mybatis中,有哪些方式可以实现模糊查询呢,需要的朋友可以参考下
    2023-05-05
  • Java内存模型(JMM)及happens-before原理

    Java内存模型(JMM)及happens-before原理

    这篇文章主要介绍了java内存模型(JMM)及happens-before原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot整合RocketMQ的方法详解

    SpringBoot整合RocketMQ的方法详解

    这篇文章主要为大家详细介绍了SpringBoot整合RocketMQ的方法,文中的示例代码讲解详细,对我们学习有一定帮助,感兴趣的小伙伴可以了解一下
    2022-08-08
  • shuffle的关键阶段sort(Map端和Reduce端)源码分析

    shuffle的关键阶段sort(Map端和Reduce端)源码分析

    今天小编就为大家分享一篇关于shuffle的关键阶段sort(Map端和Reduce端)源码分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • SpringSecurity实现自定义登录方式

    SpringSecurity实现自定义登录方式

    本文介绍自定义登录流程,包括自定义AuthenticationToken、AuthenticationFilter、AuthenticationProvider以及SecurityConfig配置类,详细解析了认证流程的实现,为开发人员提供了具体的实施指导和参考
    2024-09-09
  • Mybatis环境搭建和使用实例代码

    Mybatis环境搭建和使用实例代码

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。本文重点给大家介绍Mybatis的环境搭建和使用实例代码,需要的朋友参考下吧
    2017-12-12

最新评论