### Spring Core 官方文档知识点概述
#### 一、IoC容器
- **Spring IoC容器简介**
  - Spring框架的核心特性之一就是依赖注入(Dependency Injection, DI),它通过一个称为IoC容器来管理对象之间的关系。
  - IoC容器负责创建对象、装配组件以及管理它们的生命周期。
- **容器概览**
  - **配置元数据**:定义了如何实例化、配置及组装Bean的信息。Spring支持多种元数据格式,包括XML、注解和Groovy Bean Definition DSL。
    - **基于XML的配置元数据**:使用XML文件来定义Bean及其依赖关系。
    - **Groovy Bean Definition DSL**:提供了更简洁的配置方式,利用Groovy语言编写Bean定义。
- **容器的使用**
  - 在了解了如何配置容器之后,接下来是学习如何在应用程序中使用这些配置好的容器。
#### 二、Bean概览
- **命名Bean**
  - Spring允许为Bean指定名字,这在配置中非常重要。
  - 可以为Bean定义别名,在其他地方引用时可以使用不同的名字。
- **Bean的实例化**
  - **构造函数实例化**:通过指定的构造函数来创建Bean实例。
  - **静态工厂方法实例化**:通过调用一个静态工厂方法来创建Bean实例。
  - **实例工厂方法实例化**:通过调用一个非静态工厂方法来创建Bean实例。
#### 三、依赖
- **依赖注入**
  - **基于构造函数的依赖注入**:依赖项在构造函数中传递,确保了Bean的不可变性。
  - **基于setter的依赖注入**:依赖项通过setter方法设置,这种方式在Spring早期版本中较为常见。
  - **依赖解析过程**:描述了Spring如何解析并注入依赖项的过程。
- **依赖和配置细节**
  - **直值**(如原始类型、字符串等)可以直接在配置中定义。
  - **对其他Bean的引用**(协作对象)可以通过`ref`属性引用其他Bean。
  - **内嵌Bean**:可以在另一个Bean定义内部定义一个Bean。
  - **集合类型**:可以配置数组、列表、集合、Map等类型的依赖项。
  - **空值和空字符串**:Spring支持配置空值和空字符串作为Bean的属性值。
  - **XML快捷方式**:使用`p-`和`c-`命名空间简化属性设置。
  - **复合属性名**:支持更复杂的属性路径表达式。
- **使用`depends-on`属性**
  - 通过`depends-on`属性控制Bean之间的依赖顺序。
- **延迟初始化Bean**
  - 延迟初始化的Bean会在第一次请求时才被创建,而不是在容器启动时。
- **自动装配协作对象**
  - 自动装配简化了依赖注入,但也有其局限性和缺点。
  - 可以排除某些Bean不参与自动装配。
- **方法注入**
  - **查找方法注入**:用于注入特定的方法。
  - **任意方法替换**:用于替代或增强现有方法的功能。
#### 四、Bean作用域
- **单一实例作用域(Singleton)**
  - 单个Bean定义在Spring IoC容器中只有一个实例。
- **原型作用域(Prototype)**
  - 每次请求都会创建一个新的实例。
- **单例Bean与原型Bean的依赖**
  - 单例Bean可以依赖于原型Bean,但反过来则不行。
- **Web作用域**
  - **请求作用域**:每个HTTP请求创建一个新的实例。
  - **会话作用域**:每个HTTP会话创建一个新的实例。
  - **应用作用域**:每个Web应用创建一个新的实例。
  - **WebSocket作用域**:每个WebSocket连接创建一个新的实例。
- **自定义作用域**
  - 用户可以实现自己的作用域接口来扩展Spring容器的行为。
#### 五、Bean定义的定制
- **生命周期回调**
  - **初始化回调**:Bean创建后调用的方法。
  - **销毁回调**:容器销毁Bean前调用的方法。
  - **默认初始化和销毁方法**:Spring提供了一些默认的初始化和销毁方法。
- **ApplicationContextAware和BeanNameAware**
  - `ApplicationContextAware`接口让Bean能够访问到整个ApplicationContext。
  - `BeanNameAware`接口让Bean能够知道自己的名字。
- **其他Aware接口**
  - Spring还提供了一系列其他Aware接口,用于让Bean获取更多的上下文信息。
#### 六、Bean定义继承
- **Bean定义继承**:Bean可以继承另一个Bean的定义,从而重用属性和配置信息。这种机制可以减少重复配置,并使配置更加灵活。
以上是对Spring Core官方文档的部分内容进行的详细总结,涵盖了Spring框架中IoC容器的基础概念、Bean的配置和管理、依赖注入、Bean的作用域以及Bean定义的定制等内容。这些知识点对于理解和使用Spring框架至关重要。
                                    
                                    
                                         2025-09-17 08:52:32 
                                             5.75MB 
                                                spring
                                     
                                        
                                            1