介绍spring IOC容器,及bean加载过程
原创 emptycity 发表于:2019-08-01 14:29:36
  阅读 :130   收藏   编辑
IOC

即控制翻转,由之前我们需要对象去new变成由spring容器去创建、装配、销毁。

常见的容器

spring容器也就应用上下文分两种,一种是抽象的BeanFactory提供基本的功能,还有一种

继承BeanFactory更为高级的容器,也就是ApplicationContext。

常见的高级容器有

  • 基于配置类:AnnotationConfigApplicationContext

  • 基于类路径:ClassPathXmlApplicationContext

  • 基于文件系统:FileSystemXmlApplicationContext

  • 基于web:XmlWebApplicationContext

spring加载bean过程

以ClassPathXmlApplicationContext为例

1.调用setConfigLocations设置加载路径

2.调用refresh()方法,该方法为核心,会进行加载资源、配置文件解析、Bean定义的注册、组件的初始

3.在refresh()方法里,调用obtainFreshBeanFactory()刷新内部 BeanFactory(创建 BeanFactory 的入口)

4.在obtainFreshBeanFactory()方法会调用refreshBeanFactory(),在该方法里如果已经存在 beanFactory,将销毁旧实例,然后在创建新的 ConfigurableListableBeanFactory

5.refreshBeanFactory()里创建好BeanFactory后,会调用loadBeanDefinitions(),BeanDefinitions会贯穿整个Spring加载流程

6.之后doLoadBeanDefinitions()方法里调用registerBeanDefinitions()

7.在registerBeanDefinitions()进行doRegisterBeanDefinitions(),然后调用parseBeanDefinitions()进行完成bean的注册