spring ioc是spring这个大杂烩框架的基础与核心。几乎所有其他组件都与次相关量。
ioc 主要负责管理bean的生命周期。包括解析bean的配置、创建、依赖、销毁。
两个核心容器接口
IoC容器主要有两个容器系列:BeanFactory和ApplicationContext。
接口类BeanFactory提供了Spring中所有IOC容器的最基本的功能规范,来看看BeanFactory的组织结构图:
BeanDefinition来定义基于Spring的应用中的各种对象以及它们之间的相互依赖关系
spring要先读取配置文件
IoC容器的初始化过程(refresh()方法来启动):(源码查看可以通过loadBeanDefinitions逐步查看)
Resource定位过程--BeanDefinition的载入--向IoC容器注册
BeanDefinition(调用BeanDefinitionRegistry接口来实现,每个bean放在hashMap中存储)
读取配置文件: recourceReader接口定义来读取配置文件的核心方法, 在使用web容器的情况下主要是通过他的实现类XmlBeanDefinitionReader来读取配置文件,读取后把bean封装成BeanDefinition对象
这里用的到设计模式包括:
工厂模式
bean的创建,整体ioc容器负责bean的创建就是一个工厂模式。
单例模式
单例bean的获取
策略模式:不同的资源配置文件的读取。如 xml,url等
装饰者模式:该模式是对一个类的增强,beanFactory 有许多子类,如 listablebeanfactory 到XmlBeanFactory,功能逐步增强。