Spring框架源码脉络分析(二):spring框架通过xml以及注解方式注册BeanDefinition的流程全链路分析

系列文章主页

Spring框架源码脉络分析系列文章

在上一章节中,主要介绍了SpringIoC、依赖注入和Spring中的Bean与BeanDefinition。可能部分读者还是比较迷茫,BeanDefinition到底是干什么用的,在本章节中,将通过利用Spring实例化Java对象的过程,先带领读者过一遍Spring框架注册BeanDefinition的运行流程,然后再深入其中,详细分析每一个步骤。

Spring注册BeanDefinition流程全链路简述

在Spring容器的实例化过程中,其核心流程其实非常的简单,逻辑也很清晰,主要是三个步骤:

  1. 解析配置
  2. 定位与注册对象
  3. 注入对象

其中,第三步注入对象将在IoC的最后一个章节进行分析,在本章节中主要分析实例化的前两个过程,因为这两个过程和BeanDefinition息息相关。

而在Spring中,前两个过程都整合在了一起,整个过程其实只是一个方法,位于AbstractApplicationContext类下的refresh()方法中的obtainFreshBeanFactory()方法中。refresh()方法又称为容器的刷新与初始化,在容器的刷新与初始化阶段中,一上来就对BeanDefinition进行了解析配置、定位与注册的过程。

在解析配置、定位与注册BeanDefinition的流程中,容器主要做的事情可以抽象出主要的三个阶段如下:
在这里插入图片描述

Xml配置方式的资源定位、加载、解析、注册全链路分析

首先,在Spring源码中新建一个module,命名springdemo,然后仿照平时我们写业务的逻辑,创建一个Service层接口与实现类,然后写一个xml配置文件对该Service层接口进行配置,并在Entrance类中进行Xml配置实例化。
在这里插入图片描述
在这里插入图片描述
这里由于是xml配置形式,所以使用的容器实现类为FileSystemXmlApplicationContext,不熟悉容器类的请点击:容器类的具体介绍章节,这里主要让读者快速全局速览整个流程。

DefaultListableBeanFactory这个类中的registerBeanDefinition(String beanName, BeanDefinition beanDefinition)<

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值