小马哥讲Spring核心编程思想 第二周 重新认识IoC
1 什么是 IOC
在软件工程中,控制反转(IoC)是一种编程原理。与传统控制流相比,IoC反转了控制流。在IoC中,计算机程序的自定义编写部分接收来自通用框架的控制流。软件架构与设计反转控制比传统的过程式编程:在传统编程中,自定义代码表示的目的程序调用到可重用库中照顾通用的任务,但由于控制反转,它是调用自定义的框架,或特定于任务的代码。
2 IOC的职责
通用职责
依赖处理
- 依赖注入
- 依赖查找
生命周期管理
- 容器的生命周期
- 托管的资源(Java Beans 或 其他资源:event等)
配置
- 容器
- 外部化配置
- 托管的资源
Ioc 容器的主要实现
Java SE
- Java Beans
- Java ServiceLoader SPI
- JNDI (java Naming and Directory Interface)
Java EE
- EJB(Enterprise Java Beans)
- Servlet
特性
- 依赖查找
- 生命周期管理
- 配置元信息
- 事件
- 自定义
- 资源管理
- 持久化
- 规范
依赖查找 VS 依赖注入
类型 | 依赖处理 | 实现便利性 | API依赖性 | 代码侵入性 | 可读性 |
---|---|---|---|---|---|
依赖查找 | 主动获取 | 繁琐 | 依赖容器API | 侵入业务逻辑 | 良好 |
依赖注入 | 被动提供 | 简单 | 不依赖容器API | 侵入性低 | 一般 |