1. IOC架构原理图
1. 首先呢在spring中所有的资源都用Resource表示,比如我们创建bean常用的方式有xml 或注解,这些资源代表bean的配置清单,可以比喻成bean的创建“图纸”。
2.BeanDefinitionReader bean定义读取配置
3. BeanDefinitionRegister bean定义注册器,它的作用就是利用BeanDefinitionReader把我们的资源加载成一个个BeanDefinition(Bean定义)
例如我们用xml配置bean, BeanDefinitionRegister就会解析xml节点, 组装成BeanDefinition放到Map里,可以理解成bean的资料档案馆,bean工厂生产对象的原料。
4.在获取所有的bean定义后,就开始经过一系列流程把bean都创建出来, 第四步可以理解成工厂拿到所有图纸开始生产对象了。
5.对象生产完放到一个 叫 singletonObjects的对象池,也是个Map而已, 我们获取单例对象就从这个Map里拿。 图中三个绿色池子是生产对象过程中用到的三级缓存 用来解决循环依赖的。
SpringIOC大致流程就这样 总结下就是 读取解析配置文件 -> 组装bean定义放到Map -> 根据bean定义依次创建对象 -> 把对象都放到map 是不是很easy呢?