1. IoC基本概念
- IoC(Inversion of Control): 控制反转
- 将控制权从应用程序转移到框架
- IoC容器
- 实现了IoC思想的容器 -> SpringFramework、Guice
2. IoC容器
- 提供组件运行环境,管理组件生命周期的程序
2.1特点
- 在容器的功能特点上,还具有依赖装配等特性
- 无需主动new对象,由容器根据对象创建方式来实例化对象 -> 被动实例化
- 无需主动装配对象之间的依赖关系,IoC容器帮忙被动接受装配。
- 主动变被动 -> 好莱坞法则
- 迪米特法则(最少知识原则):无需依赖具体实现,只关心提供服务的对象。对象之间的了解尽可能的少,达到低耦合。
- 减少类之间依赖的设计原则
3. 如何理解IoC
- 容器控制应用程序
- 反转 -> 控制权发生反转,之前的控制方是应用程序
- 控制的是应用程序所需要的资源
- 控制是为了解耦组件之间的关系
4. DI基本概念
- DI(Dependency Injection): 依赖注入
- 用单独的对象来装配对象之间的依赖关系
- DI容器
- 通过DI容器来维护类之间的关系
5. 如何理解DI
- 应用程序依赖IoC容器,因为其需要依赖IoC容器装配类之间的关系
- 依赖的是IoC容器的装配功能
- IoC容器将一些应用程序所需要的资源(插件等)注入其中
6. DI优点
- 通过Setter / 构造器清晰认识组件之间的依赖关系
- 组件的依赖关系,只能在容器运行时决定(动态注入)
- 依赖注入并不会增添功能,而是提升组件重用的概率。
- 只需要简单地配置,而无需构造代码,便可完成业务逻辑。
- 组件和容器没有依赖关系,只能获得配置信息中提供的。
7. SpringIoC的构建方式
- XML配置方式(注解配置)
- Groovy脚本配置
- Java Config配置注解方式