Spring Bean的加载依赖于BeanFactory,但实际使用时不会直接使用BeanFactory,而是采用ApplicationContext这个在BeanFactory基础上提供了扩展的接口:
ApplicationContext接口具体的实现类常用的有:FileSystemXmlApplicationContet (从文件系统中读入Bean定义资源文件)、ClassPathXmlApplicationContext(从Classpath类路径中读入Bean定义资源文件)和XmlWebApplicationContext(从Web容器如Tomcat等中读入Bean定义资源文件)等。
以为例,通过分析及其父类的源码来分析IoC容器定位Bean定义资源文件的实现过程:
通过代码可以知道,在创建容器时,首先,调用父类容器的构造方法方法为容器设置好Bean资源加载器。然后,再调用方法设置Bean定义资源文件的定位路径。
Spring IoC容器对Bean定义资源的载入是从函数开始的,通过调用其父类的函数开始整个IoC容器对Bean定义的载入过程。载入Bean定义过程:
方法主要为IoC容器Bean的生命周期管理提供条件,Spring IoC容器载入Bean定义资源文件从其子类容器的方法启动,所以中是载入过程的开始:

的方法调用方法,启动容器载入Bean定义资源文件的过程。类中只抽象定义了方法,容器真正调用的是其子类,方法的源码如下:
方法的作用是:在创建IoC容器前,如果已经有容器存在,则需要把已有的容器销毁和关闭,以保证在refresh之后使用的是新建立起来的IoC容器。类似于对IoC容器的重启,在新建立好的容器中对容器进行初始化,对Bean定义资源进行载入。
是创建了工厂,载入BeanDefinition的方法只是类中的抽象方法。
的子类有、。看类名就大概知道分别是解析哪种类型的配置。
解析好的BeanDefinition,由 注册到中的:
注意上里的只是解析后的类Bean定义的相关数据,并没进行依赖注入,依赖注入在以下两种情况发生:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/205885.html