Spring 工程执行过程

龙哥6个月前spring211


ApplicationContext 是一个 接口,是 BeanFactory 这个接口的子接口,它扩展了 BeanFactory 这个接口,提供了额外附加的功能。

而 BeanFactory 是管理 bean 对象的容器的根接口,大家了解下就好,我们是针对它的子接口 ClassPathXmlApplicationContext 做的实例化,目的是加载项目中的 Spring 的配置文件,使 Spring 来管理我们定义的 bean 对象。



容器初始化执行动作

applicationContext 实例化执行代码逻辑 。

我们追踪下源码,发现 ClassPathXmlApplicationContext 初始化的时候,它做了一系列的事情。源码如下:


代码解释:


是初始化 ClassPathXmlApplicationContext 对象执行的有参构造;

加载项目下的 xml 配置文件;

调用 refresh 刷新容器的方法 bean 的实例化就在这个方法中。



容器初始化 bean 对象动作

1 的位置:是准备刷新,那么 Spring 只是设置刷新的标记,加载了外部的 properties 属性文件;

2 的位置:是准备 bean 工厂对象;

3 的位置:这一步骤就加载了配置文件中的所有 bean 标签,但是并没有对他们进行实例化;

4 的位置:完成此上下文的 bean 工厂的初始化,初始化所有剩余的单例 bean。(Spring 中默认加载的 bean 就是单例模式后面生命周期会讲)

最后的位置:完成容器的刷新,也就是所有的 bean 初始化完成


容器中获取对象的过程

它其实就是一个 map 集合 ,这个 map 集合的 key 就是我们定义的 bean 的 id 或者 bean 的 name ,那么值就是对象的实例。


Spring 初始化 bean 和获取 bean 的流程小结:

Spring 框架通过 ResourceLoader 加载项目的 xml 配置文件;

读取 xml 的配置信息 变成对象存储,但未实例化;

通过 bean 工厂处理器对 bean 做实例化,存储到一个 map 集合中默认是单例;

获取对象 通过 xml 文件中 bean 的 id 从 map 集合中通过 get (key) 获取。

作者:龙哥leon
链接:http://anool.net
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 如果觉得文章对你有帮助,可以请我喝杯咖啡

相关文章

Spring IoC(控制反转)

IoC 是一种设计模式。将实例化对象的控制权,由手动的 new 变成了 Spring 框架通过反射机制实例化。对象的实例化由 Spring 框架加载实现,放到 Spring 的容器中管理,避免了我们手...

Spring 工程的搭建

开发工具选择 idea ,创建 Maven 的 jar 工程即可。因为涉及不到浏览器的请求,所以无需创建 web 工程。创建 Maven 工程 。图片描述补全坐标信息。图片描述继续下一步 finish...

Spring 简介

概念:Spring 是一个免费开源框架,为了简化企业级项目开发,提供全面的开发部署解决方案。结构图阐释:左上角勾画出负责持久层的部分,是 Spring 对数据持久化,事务管理,支持的功能框架。大家听过...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。