Add notes about Spring/IOC
This commit is contained in:
parent
8aec99c0de
commit
b8da67e937
19
Spring bean 生命周期.md
Normal file
19
Spring bean 生命周期.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
Spring bean 生命周期
|
||||||
|
|
||||||
|
源码:AbstractAutowireCapableBeanFactory.doCreateBean
|
||||||
|
|
||||||
|
1. 实例化bean
|
||||||
|
2. 调用bean的set方法给属性赋值
|
||||||
|
3. 检查/执行BeanNameAware接口 setName (可选,实现BeanNameAware)
|
||||||
|
检查/执行BeanClassLoaderAware接口 setBeanClassLoader(可选,实现BeanClassLoaderAware)
|
||||||
|
检查/执行BeanFactoryAware接口 setBeanFactory(可选,实现BeanFactoryAware)
|
||||||
|
4. 执行bean后处理器的before (可选,自己实现BeanPostProcessor)
|
||||||
|
5. 检查/执行InitializingBean接口afterPropertiesSet (可选,实现InitializingBean)
|
||||||
|
6. 初始化bean (可选,调用自定义init方法)
|
||||||
|
7. 执行bean后处理器的after(可选,自己实现BeanPostProcessor)
|
||||||
|
8. 使用bean
|
||||||
|
9. 检查/执行DisposableBean接口destroy (可选,实现DisposableBean)
|
||||||
|
10. 销毁bean (可选,在容器关闭时调用自定义destroy方法)
|
||||||
|
|
||||||
|
spring只对scope为singleton的实例进行完整的生命周期管理,如果是prototype只负责到初始化完毕。一旦对象被客户端获取(getBean),spring不再负责该bean生命周期。
|
||||||
|
|
40
Spring 基础.md
Normal file
40
Spring 基础.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# Spring 基础
|
||||||
|
|
||||||
|
## IOC-控制反转
|
||||||
|
|
||||||
|
IOC(Inversion 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 的属性,确保数据的正确性。
|
||||||
|
|
Loading…
Reference in New Issue
Block a user