Spring IOC容器的初始化过程
2017-08-19 17:58
357 查看
Spring IOC容器的初始化过程:
BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>(256),256是初始化容量)中,通过这个HashMap来维护这些Bean。注册的过程是使用Synchronized代码块,来保证数据的一致性,Map<String, BeanDefinition> beanDefinitionMap中的key为beanName,如果有重复的beanName,则抛出异常。
1. BeanDefinition的资源定位
即Bean定义的资源的定位,由ResourceLoader通过Resource接口实现,类似于容器寻找数据的过程,Spring提供了提供了不同的Resouce读取器,如FileSystemXMLApplicationContext提供了充文件系统载入,ClassPathXmlApplicationContext可以从Class Path中载入,XmlWebApplicationContext可以在Web容器中载入等。通过以FileSystemXMLApplicationContext为例,getResourceByPath,调用refreshFactory()启动调用,2.BeanDefinition资源载入
即把用户定义好的bean转化成IOC容器内部的数据结构(即BeanDifinition),即POJO对象在IoC容器中的抽象;以FileSystemXMLApplicationContext为例,AbstractApplicationContext调用refresh接口,然后调用DefaultListableFactory的loadBeanDefinitions方法初始化XmlBeanDefinitionReader,然后解析xml文件完成BeanDefinition载入到Ioc容器中。3. 注册BeanDifinition
即向IoC容器注册BeanDifinition,通过调用BeanDefinitionRegistry接口的registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException方法来实现。Bean资源载入IoC容器后,Bean的信息已经在IoC容器中构建了数据结构和数据存储,但是这些数据还不能够提供给IoC容器直接使用,需要进行注册之后才能够检索和使用。简而言之,在IoC容器将BeanDefinition存入到一个HashMap(DefaultListableBeanFactory属性的Map<String,BeanDefinition> beanDefinitionMap = new ConcurrentHashMap<String, BeanDefinition>(256),256是初始化容量)中,通过这个HashMap来维护这些Bean。注册的过程是使用Synchronized代码块,来保证数据的一致性,Map<String, BeanDefinition> beanDefinitionMap中的key为beanName,如果有重复的beanName,则抛出异常。
相关文章推荐
- Spring IoC容器的初始化过程
- Spring IoC容器初的初始化过程
- Spring中IOC容器的初始化过程
- Spring IOC容器初始化过程分析
- springMVC的容器初始化过程
- Spring4.3.x 容器在web应用中的初始化过程
- spring技术内幕笔记:IoC容器初始化过程(2)- BeanDefinition的载入
- Spring容器初始化过程
- 源码解读(一): spring在web容器中的初始化过程
- Java开源博客My-Blog之mysql容器重复初始化的严重bug修复过程
- spring源码研究之IoC容器在web容器中初始化过程
- spring笔记6 容器加载过程、bean初始化
- Spring 容器IOC的初始化过程
- Spring IOC容器初始化底层代码分析
- IOC容器初始化过程
- 【spring源码学习】spring的IOC容器在初始化bean过程
- IoC容器的初始化过程
- spring ioc容器创建过程深入剖析
- Spring技术内幕之IOC容器的实现(01)-IOC容器初始化过程
- Spring IOC之容器实现过程