前言:在经过前面十二篇文章的分析,对bean的加载流程大致梳理清楚了。因为内容过多,因此需要进行一个小总结。


经过前面十二篇文章的漫长分析,终于将xml配置文件中的bean,转换成我们实际所需要的真正的bean对象。

总结

【spring源码分析】IOC容器初始化(一):主要分析了Spring是如何解析占位符以及BeanFactory的最终实现类DefaultListableBeanFactory。

【spring源码分析】IOC容器初始化(二):以loadBeanDefinitions函数为切入点,介绍了Resource体系与ResourceLoader体系,以及Spring是如何确定文件的验证模式,着重分析了Spring是如何对注释信息进行消费的。

【spring源码分析】IOC容器初始化(三):主要分析Spring是如何对bean进行解析的,为BeanDefinition的注册做准备。

【spring源码分析】IOC容器初始化(四):分析BeanDefinition注册的核心流程。

以上4篇文章,主要分析了Spring是如何从xml配置文件中加载并解析bean变成BeanDefinition对象的。注意最终BeanDefinition的落脚点为:beanDefinitionMap。bean加载的整个流程如下图:

【spring源码分析】IOC容器初始化(五):本篇文章主要对AbstractApplicationContext#refresh的剩余方法进行粗略介绍,了解其大致流程。

【spring源码分析】IOC容器初始化(六):进入bean的加载流程,主要分析如何从单例缓存中获取bean实例。

【spring源码分析】IOC容器初始化(七):继续分析了从单例缓存中获取bean实例,并且还简要分析了其他scope作用域bean的实例化流程。

【spring源码分析】IOC容器初始化(八):主要介绍AbstractAutowireCapableBeanFactory#createBean方法,关注createBeanInstance、populateBean、initializeBean函数。

【spring源码分析】IOC容器初始化(九):着重分析instantiateUsingFactoryMethod方法的执行流程,方法体较大,其核心点就是确定工厂对象、获取构造函数和构造参数,最后通过反射执行工厂方法创建bean对象。

【spring源码分析】IOC容器初始化(十):分析了AbstractAutowireCapableBeanFactory#createBean的余下流程。

【spring源码分析】IOC容器初始化(十一):主要分析了createBeanInstance方法的余下流程,主要关注populateBean和initializeBean方法。

【spring源码分析】IOC容器初始化(十二):着重分析了Spring中的循环依赖问题,Spring只解决单例模式下的循环依赖问题。

从六到十二篇主要分析了bean的初始化过程,以及Spring中是如何解决循环依赖的。

接下来计划:IOC初始化过程中查漏补缺,Spring AOP的相关源码。


by Shawn Chen,2019.04.29,下午。

【spring源码分析】IOC容器初始化(总结)的更多相关文章

  1. SPRING源码分析:IOC容器

    在Spring中,最基本的IOC容器接口是BeanFactory - 这个接口为具体的IOC容器的实现作了最基本的功能规定 - 不管怎么着,作为IOC容器,这些接口你必须要满足应用程序的最基本要求: ...

  2. Spring源码解析-ioc容器的设计

    Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFac ...

  3. spring源码分析---IOC(1)

    我们都知道spring有2个最重要的概念,IOC(控制反转)和AOP(依赖注入).今天我就分享一下spring源码的IOC. IOC的定义:直观的来说,就是由spring来负责控制对象的生命周期和对象 ...

  4. spring 源码之 ioc 容器的初始化和注入简图

    IoC最核心就是两个过程:IoC容器初始化和IoC依赖注入,下面通过简单的图示来表述其中的关键过程:

  5. Spring源码阅读-IoC容器解析

    目录 Spring IoC容器 ApplicationContext设计解析 BeanFactory ListableBeanFactory HierarchicalBeanFactory Messa ...

  6. Spring 源码剖析IOC容器(一)概览

    目录 一.容器概述 二.核心类源码解读 三.模拟容器获取Bean ======================= 一.容器概述 spring IOC控制反转,又称为DI依赖注入:大体是先初始化bean ...

  7. Spring源码解析-IOC容器的实现

    1.IOC容器是什么? IOC(Inversion of Control)控制反转:本来是由应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IOC容器,Spring的IO ...

  8. Spring源码解析-IOC容器的实现-ApplicationContext

    上面我们已经知道了IOC的建立的基本步骤了,我们就可以用编码的方式和IOC容器进行建立过程了.其实Spring已经为我们提供了很多实现,想必上面的简单扩展,如XMLBeanFacroty等.我们一般是 ...

  9. Spring源码之IOC容器创建、BeanDefinition加载和注册和IOC容器依赖注入

    总结 在SpringApplication#createApplicationContext()执行时创建IOC容器,默认DefaultListableBeanFactory 在AbstractApp ...

随机推荐

  1. resteasy上传文件写法

    resteasy服务器代码 @Path(value = "file") public class UploadFileService { private final String ...

  2. java线程间通信之通过管道进行通信

    管道流PipeStream是一种特殊的流,用于在不同线程间直接传送数据,而不需要借助临时文件之类的东西. jdk中提供了四个类来使线程间可以通信: 1)PipedInputStream和PipedOu ...

  3. 小程序开发之图片转Base64(C#、.et)

    小程序页面代码因为某些人力不可控的代码丢失了,这里简单说明一下 调用小程序APIwx.chooseImage(OBJECT)选择相册或拍摄照片,会返回 tempFilePaths,之后通过wx.upl ...

  4. Maven项目中,系统设置的CLASSPATH环境变量问题

    在Maven项目中,系统的CLASSPATH环境变量失效了吗?在用Maven开发登录网站时,servlet-api出现错误,jdbc也出现错误,都是ClassNotFoundException,但这两 ...

  5. Java 学习笔记 (八) Java 变量

    head first java page85 实例变量是声明在类内而不是方法中 class Horse{ private double height=15.2; private String bree ...

  6. [Python接口自动化]从零开始学习python自动化(1):环境搭建

    第一步:安装python编译环境 安装python编译环境之前,必须保证已安装jdk哈,如果为安装,请参考https://jingyan.baidu.com/article/6dad5075d1dc4 ...

  7. bzoj5251 [2018多省省队联测]劈配

    直接网络流模拟即可AC. 可持久化+暴力=90分, 可持久化+二分=30分, 暴力加边+二分=100分. 我也很无奈啊. Ivan便涨红了脸,额上的青筋条条绽出,争辩道,“memcpy也是可持久化…… ...

  8. BZOJ_1861_[Zjoi2006]Book 书架_splay

    BZOJ_1861_[Zjoi2006]Book 书架_splay 题意: 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在 ...

  9. [Usaco2005 nov]Grazing on the Run 边跑边吃草 BZOJ1742

    分析: 首先,连续选择一段必定最优... 区间DP,f[i][j]表示从i开始,连续j个被吃掉了,并且,牛在i处,g[i][j]则表示在i+j-1处 f[i][j]可以从g[i+1][j]和f[i+1 ...

  10. 【Canal源码分析】parser工作过程

    本文主要分析的部分是instance启动时,parser的一个启动和工作过程.主要关注的是AbstractEventParser的start()方法中的parseThread. 一.序列图 二.源码分 ...