ClassPathXmlApplicationContext源码分析

master
xuchengsheng 2023-11-23 17:56:13 +08:00
parent 81d8e2f4bf
commit ad742b1846
1 changed files with 15 additions and 0 deletions

View File

@ -17,6 +17,7 @@
### 二、知识储备
1. **XmlBeanDefinitionReader**
+ [XmlBeanDefinitionReader](https://github.com/xuchengsheng/spring-reading/blob/master/spring-beans/spring-bean-xmlBeanDefinitionReader/README.md)是Spring Framework中的一个类用于加载和解析XML格式的Bean定义配置文件将配置文件中定义的Bean元数据信息提取为Spring容器内部的Bean定义对象进而实现IOC容器的构建和管理。这类负责读取XML配置文件解析Bean的定义信息包括ID、类名、属性、依赖等并将这些定义注册到Spring应用程序上下文使我们能够方便地配置和管理应用程序中的各种Bean组件。
### 三、基本描述
@ -26,20 +27,34 @@
### 四、主要功能
1. **加载配置文件**
+ 主要功能是加载指定的 XML 配置文件该配置文件包含了应用程序中各个组件bean的定义、依赖关系、配置信息等。
2. **容器初始化**
+ `ClassPathXmlApplicationContext` 在被实例化时,会读取并解析配置文件,然后初始化 Spring 容器。这个过程包括创建和管理 bean 实例、解决 bean 之间的依赖关系等。
3. **获取 bean 实例**
+ 通过容器的 `getBean` 方法,可以从容器中获取在配置文件中定义的 bean 实例。
4. **IoC控制反转**
+ `ClassPathXmlApplicationContext` 是 IoC 容器的一种实现,它负责管理和控制组件的生命周期。在容器初始化时,会根据配置文件中的信息实例化和装配 bean而不是由应用程序代码直接创建对象。
5. **依赖注入**
+ 容器通过读取配置文件中的信息,自动解决 bean 之间的依赖关系。这意味着在配置文件中声明的 bean 可以通过属性注入或构造函数注入的方式获取其依赖的其他 bean。
6. **AOP面向切面编程**
+ `ClassPathXmlApplicationContext` 支持通过配置文件定义切面和通知,实现横切关注点的分离,使得应用程序的关注点更加清晰和模块化。
7. **事件传播**
+ Spring 容器支持事件机制,`ClassPathXmlApplicationContext` 可以发布应用程序中发生的事件,以便其他组件能够监听并作出相应的响应。
### 五、最佳实践
通过 `ClassPathXmlApplicationContext` 构造方法创建 Spring 容器的实例,加载类路径下的 "beans.xml" 配置文件。使用容器的 `getBean` 方法,通过指定 bean 的类型(`MyBean.class`)获取在配置文件中定义的 bean 实例,并将其打印出来。