spring 源码分析_Spring 底层源码分析

Spring 运行原理

  • Spring 启动时读取应用程序提供的 Bean 配置信息,并在 Spring 容器中生成一份相应的Bean 配置注册表,然后根据这张注册表实例化 Bean,装配好 Bean 之间的依赖关系,为上层应用提供准备就绪的运行环境。

930efe64eed7731190bb7c35724cd53b.png

Spring 源码分析

ApplicationContext

Spring 中 IOC 容器分类

  • Spring 中有两个主要的容器系列:
  • 1)实现 BeanFactory 接口的简单容器;
  • 2)实现 ApplicationContext 接口的高级容器。

ApplicationContext 容器介绍

  • ApplicationContext内部封装了一个BeanFactory对象,来实现对容器的操作,BeanFactory封装了bean 的信息,而ApplicationContext 通过访问BeanFactory对象获取 bean 的对象信息ApplicationContext 也实现了一系列的 BeanFactory 接口(可以说 ApplicationContext 对BeanFactory 对象实现一种代理)。
  • ApplicationContext 在应用这个 DefaultListableBeanFactory 对象的基础上,不仅实现了BeanFactory 接口提供的功能方法,并且黏合了一些面向应用的功能,如资源/国际化支持/框架事件支持等

e7d3cbf28b20fc09ef77ffbb1f26278c.png

ClassPathXmlApplicationContext

6aa7e6768628d13a219178290340cdf2.png

refresh() 方法

286f3858b0b14f60e0bb1b7a3b07a75f.png

实例化 Bean 工厂

DefaultListableBeanFactory

db679fc31f5ce6e134e9d1a233560098.png

66d89ebb7b76f3c78d7cdfa25820b88c.png

121f0f7a1bcac3a80698280888e5bd77.png

79162fcc7480436c0c86ce7797903965.png

d3af866329774451e5111bc4250f17db.png

在 BeanFactory 子类中有一个 DefaultListableBeanFactory 类,它包含了基本 Spirng IoC容器所具有的重要功能,开发时不论是使用 BeanFactory 系列还是 ApplicationContext 系列来创建容器基本都会使用到 DefaultListableBeanFactory 类,可以这么说,在 spring 中实际上把它当成默认的 IoC 容器来使用

解析配置文件

XmlBeanDefinitionReader

00c931b265d7eff9225b44fbb3a13e02.png

将BeanDefiniton 注册到容器中

b870236cd5c6d1facf2758d531099e0f.png

Bean 对象的实例化

aed123c5315084e47b1b80b7fc687487.png

GetBean

16901b064ef678c177c9113eef7c6a5d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值