notes/Spring 基础.md

41 lines
2.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Spring 基础
## IOC-控制反转
IOCInversion of Control控制反转是一个设计原则用于减少代码之间的耦合度。它的核心思想是将对象的创建和依赖关系的管理交给外部容器而不是在对象内部进行管理。通过这种方式可以实现代码的松耦合提高代码的可维护性和可测试性。
### IOC 的基本概念
1. **控制反转**:传统的编程方式中,应用程序代码直接控制对象的创建和依赖关系的管理。而在 IOC 中,这种控制权被反转给了外部容器(如 Spring 容器)。容器负责对象的创建和依赖关系的注入。
2. **依赖注入Dependency Injection, DI**IOC 的一种实现方式。依赖注入有三种主要方式:
- **构造器注入**:通过构造函数传递依赖对象。
- **Setter 方法注入**:通过 Setter 方法传递依赖对象。
- **字段注入**:通过直接在字段上使用注解(如 `@Autowired`)传递依赖对象。
### IOC 的优点
1. **松耦合**:通过将对象的创建和依赖关系的管理交给外部容器,可以减少代码之间的耦合度,提高代码的可维护性和可扩展性。
2. **可测试性**:由于依赖关系是通过注入的方式传递的,可以轻松地替换依赖对象,从而更容易进行单元测试。
3. **灵活性**:通过配置文件或注解,可以灵活地管理对象的创建和依赖关系,而无需修改代码。
### Spring 与 IOC
Spring 通过 IOC 容器实现了 IOC 设计原则。IOC 容器负责管理对象的创建、配置和生命周期并通过依赖注入Dependency Injection, DI来实现对象之间的松耦合。
### Spring IOC 容器
Spring 容器是 Spring 框架的核心组件之一它负责管理应用程序中的对象Bean的生命周期和依赖关系。Spring 容器的主要作用包括以下几个方面:
1. 管理 Bean 的生命周期:创建、初始化、销毁等。
2. 实现依赖注入通过构造器注入、Setter 方法注入和字段注入实现对象之间的松耦合。
3. 提供灵活的配置管理:通过 XML 配置文件、注解或 Java 配置类定义 Bean 和依赖关系。
4. 支持事件处理:发布和监听容器中的各种事件。
5. 提供国际化支持:获取国际化消息,实现多语言支持。
6. 资源加载加载外部资源如文件、URL 等)。
7. 类型转换:在不同类型之间进行转换和格式化。
8. 数据验证:验证 Bean 的属性,确保数据的正确性。