Bean的生命周期(创建Bean的流程)

简单来说,Bean的生命周期只有四个阶段:实例化 Instantiation --> 属性赋值 Populate --> 初始化 Initialization --> 销毁 Destruction。


getBean方法是spring ioc的核心,阅读getBean方法的源码也是理解spring容器工作原理所必须要做的事情!

我们先来看一下getBean方法,getBean的具体实现逻辑在AbstractBeanFactory类里面的doGetBean方法中。

首先简略地介绍一下整体的执行流程:

1.根据传入beanName获取bean的别名

2.尝试从缓存中获取之前被实例化过了的单例bean

3.根据上面获取到的实例进一步获取bean(因为获取到的可能是一个工厂bean)

4.如果上面的步骤之后没有获取到bean那么就需要创建bean了

5.先根据缓存判断一下当前的bean是否正在被创建,如果是的话表示依赖循环了

6.尝试获取当前工厂的父工厂并从当前工厂的bean定义缓存中获取bean定义委托父工厂去生成

7.如果当前要获取的bean只是为了进行类型检查就标记bean已经被创建

8.同当前bean的父类合并bean的定义,并检查获取到的bean定义是不是抽象的

9.通过上面获取到的bean定义找到当前bean的依赖bean并递归调用getBean方法获取依赖bean

10.判断bean的scope是单例的还是原型的或者是其他的创建bean

11.根据要求返回的bean类型通过convertService来对bean进行转换
————————————————
版权声明:本文为CSDN博主「完美的工程学」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/dcx5173/article/details/118344056

  • 参考
  • https://blog.csdn.net/dcx5173/article/details/118344056?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-118344056-blog-120083309.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1-118344056-blog-120083309.pc_relevant_aa&utm_relevant_index=2
  • https://blog.csdn.net/zhang_qing_yun/article/details/120083309

Spring getBean流程相关推荐

  1. 简单理解Spring getBean流程

    本文直接讲述流程,不贴代码,全是干货,面试必看,口口相传. 熟悉Spring启动流程的同学应该清楚,refresh()是最为重要的关键方法,其调用的finishBeanFactoryInitializ ...

  2. Spring IoC 源码系列(五)getBean 流程分析

    一.FactoryBean 用法讲解 在分析源码流程之前,我们先来看一下 FactoryBean,乍一看这家伙和 BeanFactory 很像,它们都可以用来获取 bean 对象,简单来说 Facto ...

  3. Spring事务处理流程和原理(动脑学院笔记)

    一.事务理论 1.事务的特性  2.事务的隔离级别 3.事务的传播   4.利用数据库事务实现应用事务控制 要求:同一个事务需要同一个库的同一个连接.  5.单一数据源,如何让事务的所有操作使用同一连 ...

  4. 分布式锁 动态代理 Java数据结构List,Set,Map,Spring执行流程,Spring MVC组件

    这里对今日的内容进行总结: 分布式锁具备的条件: 具备的条件: 在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行. 高可用的获取锁与释放锁. 高性能的获取锁与释放锁. 具备可重入的特 ...

  5. Java框架之SpringMVC 05-拦截器-异常映射-Spring工作流程

    Java框架之SpringMVC 05-拦截器-异常映射-Spring工作流程 参考文章: (1)Java框架之SpringMVC 05-拦截器-异常映射-Spring工作流程 (2)https:// ...

  6. Spring Batch流程介绍

    Spring Batch流程介绍: 上图描绘了Spring Batch的执行过程.说明如下: 每个Batch都会包含一个Job.Job就像一个容器,这个容器里装了若干Step,Batch中实际干活的也 ...

  7. spring启动流程(一):启动流程概览

    1. spring 启动流程概览 在前面 demo 的 main()方法中,有这么一行: ApplicationContext context =new AnnotationConfigApplica ...

  8. 初次创建spring boot流程和注意事项

    新手初次创建spring boot流程和注意事项 一.项目整合与部署存在的问题 1.1 SSM手动整合存在的问题 SSM整合步骤多.配置繁琐 项目进行服务器部署步骤繁琐 1.2 如何简化这些繁琐的配置 ...

  9. spring getBean()方法解析概述

    1.getBean(beanName) 整体概述 1.transformedBeanName(name) name可能是别名,将别名(alias)解析成真正的beanName 截取&beanN ...

最新文章

  1. EWSD命令输入格式解释
  2. BZOJ 1016 最小生成树计数
  3. Python十段经典代码
  4. C程序设计语言--第五章:指针与数组
  5. PowerBuilder调用.Net编译好的DLL
  6. 问题8:NavigationController 自定义返回按钮I
  7. 一个问题引发的连环血案
  8. Mysql的基础知识
  9. 互联网Internet体系结构以及网关协议OSPF
  10. SQLPLUS SPOOL命令使用
  11. chrome版本太旧 无法更新
  12. unity2018关联不到vs_vs2015与unity2018兼容性问题
  13. 微型四轴飞行器(1)
  14. 将ttc改为otf_Font Renamer字体更名、重命名工具_支持ttf、ttc、otf、pfb字体 V3.0 下载...
  15. 分享一款超级好用的前端开发工具-webstorm for mac下载
  16. 解决谷歌的but your computer or network may be sending automated queries
  17. 微信播放在服务器视频无法播放音乐,解决ios微信浏览器中audio和video音乐视频无法自动播放等问题...
  18. python通过ssh通道连接PostgreSQL数据库(mysql等类同)
  19. VS2019安装失败
  20. spring cloud eureka 样式没有了,wro.css wro.js 404

热门文章

  1. c++11_14学习之c++14新特性
  2. 高校房地产管理系统可以管理高校哪类房产?
  3. C# arcgis AE/AO ITopologicalOperator 中Intersect 完成裁剪功能
  4. 从外企高管到一贫如洗最后东山再起,陈坤极是如何创业的?
  5. 取代前端er?PyScript到底是何方神圣
  6. Android studio计算器
  7. 如果遇到Xshell键盘无法使用,你需要这样做!
  8. 从联通沃指数看网易云音乐的流量收割路径
  9. 【MapReduce】TF-IDF
  10. python 切片用法_Python切片用法实例教程