第二章:重新认识 IoC
IoC主要实现策略:
- 依赖查找、依赖注入
(1)服务定位模式
(2)依赖注入:构造器注入、参数注入、Setter注入、接口注入
(3)上下文依赖查询
(4)模板方法设计模式
(5)策略设计模式
IoC 容器的职责:
- 通用职责
- 依赖处理
- 依赖查找
- 依赖注入
- 生命周期管理
- 容器
- 托管的资源(Java Beans 或其他资源)-- 比如说spring的事件监听,可以关联其他事件的开始或者变更
- 配置
- 容器 -- 定时任务
- 外部化配置 -- 属性配置,xml配置
- 托管的资源(Java Beans 或其他资源)-- 对线程池进行配置
依赖查找和依赖注入的区别?
![image-20220912214647116](/chenrj/doc/raw/master/%E5%90%8E%E7%AB%AF/Spring/spring%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/spring%E6%A0%B8%E5%BF%83%E7%BC%96%E7%A8%8B%E6%80%9D%E6%83%B3/assets/image-20220912214647116.png)
- 依赖查找是主动或手动的依赖查找方式,通常需要依赖容器或标准 API 实现。而依赖注入则是手动或自动依赖绑定的方式,无需依赖特定的容器和API。
构造器注入 vs setter注入
![image-20220912214918651](/chenrj/doc/raw/master/%E5%90%8E%E7%AB%AF/Spring/spring%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/spring%E6%A0%B8%E5%BF%83%E7%BC%96%E7%A8%8B%E6%80%9D%E6%83%B3/assets/image-20220912214918651.png)
面试题
1、什么是IOC?
![image-20220912215825032](/chenrj/doc/raw/master/%E5%90%8E%E7%AB%AF/Spring/spring%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/spring%E6%A0%B8%E5%BF%83%E7%BC%96%E7%A8%8B%E6%80%9D%E6%83%B3/assets/image-20220912215825032.png)
2、依赖查找和依赖注入的区别?
![image-20220912220111645](/chenrj/doc/raw/master/%E5%90%8E%E7%AB%AF/Spring/spring%E6%BA%90%E7%A0%81%E5%AD%A6%E4%B9%A0/spring%E6%A0%B8%E5%BF%83%E7%BC%96%E7%A8%8B%E6%80%9D%E6%83%B3/assets/image-20220912220111645.png)
3、Spring 作为 IoC 容器的优势:
- 典型的 IoC 管理,依赖查找和依赖注入
- AOP 抽象
- 事务抽象
- 事件机制
- SPI 扩展
- 强大的第三方整合
- 易测试性
- 更好的面向对象