2025年Spring IOC容器的初始化过程

Spring IOC容器的初始化过程Spring IOC 容器的初始化过程 1 BeanDefiniti 的资源定位 即 Bean 定义的资源的定位 由 ResourceLoad 通过 Resource 接口实现 类似于容器寻找数据的过程 Spring 提供了提供了不同的 Resouce 读取器 如 FileSystemXM 提供了充文件系统载入

Spring IOC容器的初始化过程:

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 beanDefinitionMap = new ConcurrentHashMap(256),256是初始化容量)中,通过这个HashMap来维护这些Bean。注册的过程是使用Synchronized代码块,来保证数据的一致性,Map beanDefinitionMap中的key为beanName,如果有重复的beanName,则抛出异常。

编程小号
上一篇 2025-10-01 09:51
下一篇 2025-02-20 11:57

相关推荐

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