spring核心之IOC
spring IOC? ?控制反轉? ? 核心思想
了解IOC,首先需要了解DI? --- 軟件設計的重要思想? ? ? ? ? ? 依賴注入
什么事依賴注入呢?
例子:設計行李箱類
傳統寫法:首先設計輪子,根據輪子設計底盤,根據底盤設計箱體。OK,設計完成。
? ? ? ? ? ? 換成java中類的描述:1.輪子類:Class Tire { int size;//輪子大小? ?Tire(){this.size = 20;}}? ?2.底盤類 : Class Botton {Tire tire;//輪子? ?Botton(){this.tire =?new? tire;}}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.箱體類:Class FrameWork{ Botton botton;//底盤? FramWork() {this.botton =?new? botton;}}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 生成一個行李箱:new FrameWork();
? ? ? ? ?上層建筑依賴下層建筑。每當需要設計一個新式的行李箱,則需要從輪子到箱體全部需要重新寫代碼,嚴重違反了代碼的可重用性;
DI寫法:首先設計箱體,根據箱體選擇底盤,根據底盤選擇輪子。OK,設計完成。
? ? ? ? ? ? 換成java中類的描述:1.輪子類:Class Tire { int size;//輪子大小? ?Tire(int size){this.size = size;}}? ?2.底盤類 : Class Botton {Tire tire;//輪子? ?Botton(Tire tire){this.tire =? tire;}}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.箱體類:Class FrameWork{ Botton botton;//底盤? FramWork(Botton botton) {this.botton = botton;}}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 生成一個行李箱:Tire tire = new Tire(20); Botton botton = new Botton(tire);FrameWork frameWork = new FrameWork(botton);
? ? ? ? 上層建筑控制下層建筑。將輪子,底盤類,箱體類設計成接口設計,每次只需在main方法中注入即可,不需要修改過多的代碼量,需要什么樣的輪子全部繼承輪子接口。
依賴注入減少了我們重復修改源代碼。
依賴注入的幾種方式:setter方法,Construsctor構造方法注入(上面實現的那種)
當然我們的IOC可不止這點技能,我們的IOC作為容器的存在,當然是海納百川
1.bean工廠,將各種bean對象注入到IOC容器中統一維護,做到隨用隨取。隱藏了各種注入細節。
IOC容器運行機制:
?
?
實例化bean運用到了java的反射機制
?
IOC容器支持的功能:依賴注入,依賴檢查,自動裝配,支持集合,指定初始化的銷毀方法(這就和spring的另一個基礎核心內容AOP相關),支持回調方法。
?
轉載于:https://www.cnblogs.com/ZTYCandy/p/11438534.html
總結
以上是生活随笔為你收集整理的spring核心之IOC的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql 连接查询
- 下一篇: Flutter 以Dialog Acti