Spring底层源码分析

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

 

 

1.读取Bean的配置信息(xml中的<bean>,java类中有@Configuration,通过注解@Autowrite)

2.将读取到的Bean的配置信息放入Spring配置的容器中的Bean定义的注册表,通过注册表将Bean实例化到Bean的实现类中,形成依赖注入

3.再将Bean实例放入Spring容器中的Bean的缓存池

4.如果需要,就从SpringIOC中的缓存池中取出

 

ApplicationContext
 
 
Spring IOC 容器分类
Spring 中有两个主要的容器系列:
1 )实现 BeanFactory 接口的简单容器;
2 )实现 ApplicationContext 接口的高级容器。
 
 
ApplicationContext 容器介绍
ApplicationContext 内部封装了一个 BeanFactory 对象,来实现对容器的操作, BeanFactory封装了 bean 的信息,而 ApplicationContext 通过访问 BeanFactory 对象获取 bean 的对象信息 ApplicationContext 也 实 现 了 一 系 列 的 BeanFactory 接 口 ( 可 以 说 ApplicationContext BeanFactory 对象实现一种代理 )
ApplicationContext 在应用这个 DefaultListableBeanFactory 对象 的基础上,不仅实现了BeanFactory 接口提供的功能方法,并且黏合了一些面向应用的功能,如资源 / 国际化支持 / 框架事件支持等
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, //继承于 BeanFactory HierarchicalBeanFactory,//继承于 BeanFactory MessageSource, // ApplicationEventPublisher,// ResourcePatternResolver //继承 ResourceLoader, 用于获取 resource 对象
ClassPathXmlApplicationContext
refresh() 方法

 

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

 

解析配置文件
XmlBeanDefinitionReader

 

 

BeanDefiniton 注册到容器中

 

 

Bean 对象的实例化

 

GetBean

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值