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

 

 

 

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM