IOC 小白覺得就是原來需要自己new的類 交給了IOC工廠去處理new類這個事情
DI 就是原來需要我們自己new的類現在可以通過依賴注入
依賴注入需要寫 一行代碼, new新的類也需要寫一行代碼 優勢在在哪里?
有人說改需要改動建構式 那我直接new一個無參的建構式呢?覺得這樣好像是就沒有什么優勢了 非要說優勢是不是那個工廠模式里的餓汗模式 不用的時候不需要new是一個優勢么?
來自小白的疑問?請求大神解答一下
uj5u.com熱心網友回復:
樓主沒有搞懂IOC是什么東西,IOC是一種編程思想,不是具體的那種技術,SpringIOC是利用bean容器來管理創建好的實體,這些bean默認是單利的。而DI,就是把實體物件賦值給參考變數,這樣可以解決物件之間的回圈依賴,使得物件的復用性達到最大。uj5u.com熱心網友回復:
簡化代碼。。。uj5u.com熱心網友回復:
修改的時候好修改 你的專案有很多個new 到時候要修改怎么找uj5u.com熱心網友回復:
spring幫你管理那些實體,并且默認是單例模式uj5u.com熱心網友回復:
把功能入口(如:處理web請求、定時任務)系結到spring管理的bean的方法上;這些入口bean依賴的其他基礎bean,都交由spring來掃描、初始化、注入;
基礎bean依賴的配置項也由spring來獲取和注入。
例如基礎bean是負責操作資料庫的,如果不一開始就完全把依賴注入作業交給spring,就可能有外包寫出下面這樣高度耦合的代碼:
入口bean必須在new一個基礎bean后,先呼叫基礎bean的init方法來傳入資料庫配置,然后基礎bean的update方法才能正常運行;進而同樣的new、init、update三連代碼出現在多個不同的入口bean里;甚至各個入口bean從不同的組態檔里讀取同一個資料庫的地址配置。
uj5u.com熱心網友回復:
最簡單的例子,你今天用MySql,明天要改成Oracle,后天又要改成SqlServer,常規作法是每天改代碼,今天 new MySql(); 明天改成 new Oracle();
如果用注入的方法,源代碼都不用改,新增一個Oracle的實作,然后修改一下配置就可以發布了。
uj5u.com熱心網友回復:
上面的例子用資料庫,可能不太合適,畢竟沒幾個專案天天換資料庫的。你把資料庫換成業務來理解,比如商品,今天售價10元,明天五一打8折,節后改成繼續打9折,再后來改成原價但是送紙巾。
你不用注入來做,就會陷入天天修改舊代碼的旋渦。
uj5u.com熱心網友回復:
感覺這是oop的范疇,應該使用設計模式解決。
DI還是能減少重復new代碼+宣告周期吧。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/254607.html
標籤:Java EE
