1.主要實現策略
IOC大量使用了模板方法模式,XML,註解來實現
2.容器職責
⑴通用職責
-
依賴處理
- 依賴查找(主動)
- 依賴注入(被動)
-
生命週期管理
- 容器(啓動,停止等)
- 託管的資源(比如bean,事件的監聽器等)
-
配置
- 容器
- 外部化配置
- 託管的資源
3.容器實現
在long long ago就引入了IOC的概念。比如EJB,後來才引入了spring,目前比較火熱的有:
- Guice
- Spring
4.傳統IOC容器實現
Java Beans 作爲IOC容器(在java.javabeans包)
- 特性(圍繞着IOC容器的特性)
- 依賴查找
- 生命週期管理
- 配置元信息
- 事件
- 自定義,對方法或字段描述性的說明
- 資源管理
- 持久化
5.輕量級IOC容器
EJB是比較重的
6.依賴查找和依賴注入
依賴查找,主動獲取,相對麻煩
依賴注入,被動獲取,相對簡單
7.構造器注入和setter注入
Spring官方推薦的是構造器注入
8.常見問題
spring作爲IOC容器的優勢:
除了滿足傳統IOC容器的功能,AOP抽象,事務機制,事件機制,SPI擴展等等