校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > 项目框架 > IOC依赖注入
题目

Spring IoC 容器初始化过程?

解答

基于 XML 的容器初始化

当创建一个 ClassPathXmlApplicationContext 时,构造方法做了两件事:① 调用父容器的构造方法为容器设置好 Bean 资源加载器。② 调用父类的 setConfigLocations 方法设置 Bean 配置信息的定位路径。

ClassPathXmlApplicationContext 通过调用父类 AbstractApplicationContext 的 refresh 方法启动整个 IoC 容器对 Bean 定义的载入过程,refresh 是一个模板方法,规定了 IoC 容器的启动流程。
在创建 IoC 容器前如果已有容器存在,需要把已有的容器销毁,保证在 refresh 方法后使用的是新创建的 IoC 容器。

容器创建后通过 loadBeanDefinitions 方法加载 Bean 配置资源,

该方法做两件事:
① 调用资源加载器的方法获取要加载的资源。
② 真正执行加载功能,由子类 XmlBeanDefinitionReader 实现。加载资源时首先解析配置文件路径,读取配置文件的内容,然后通过 XML 解析器将 Bean 配置信息转换成文档对象,之后按照 Spring Bean 的定义规则对文档对象进行解析。

Spring IoC 容器中注册解析的 Bean 信息存放在一个 HashMap 集合中,key 是字符串,值是 BeanDefinition,注册过程中需要使用 synchronized 保证线程安全。
当配置信息中配置的 Bean 被解析且被注册到 IoC 容器中后,初始化就算真正完成了,Bean 定义信息已经可以使用且可被检索。
Spring IoC 容器的作用就是对这些注册的 Bean 定义信息进行处理和维护,注册的 Bean 定义信息是控制反转和依赖注入的基础。

基于注解的容器初始化

分为两种:

① 直接将注解 Bean 注册到容器中,可以在初始化容器时注册,也可以在容器创建之后手动注册,然后刷新容器使其对注册的注解 Bean 进行处理。
② 通过扫描指定的包及其子包的所有类处理,在初始化注解容器时指定要自动扫描的路径。

C 2条回复 评论
偷看星星

UI设计发展前景怎么样

发表于 2024-04-04 22:00:00
0 0
星星打烊

安利一款我用过最好用的接口测试工具——apipost ,页面简洁,操作简单功能也多。

发表于 2022-03-02 22:00:00
0 0