怎樣實現依賴注入功能之筆記

2021-09-19 10:29:23 字數 531 閱讀 9794

對類的例項化,不是開發者自己通過new的方式來例項化,而是通過框架自身來例項化,這過程稱為ioc。控制不是由開發者來決定的,而是反轉給框架了。一般地,我們也將控制反轉稱為di(dependency injection,依賴注入)。那如何實現呢?

最簡單的方式是,先通過beanhelper獲取所有bean map(是乙個map,object> 結構,紀錄了類與物件的對映關係,

分別取出bean類與bean例項 ,進而通過反射獲取類中所有的成員變數。繼續遍歷這些成員變數,在迴圈中判斷當前成員變數是否帶有inject註解,若帶有該註解,則從bean map中根據bean類取出bean例項。最後通過reflectionutil#setfield方法來修改當前成員變數的值。

核心實現:

map, object> beanmap = beanhelper.getbeanmap();

if (collectionutil.isnotempty(beanmap)) }}

}}

}

更多架構底層實現**請移步

依賴注入筆記

依賴注入 假設當前有乙個使用者名叫bowman,bowman每天做三件事,看書,玩遊戲,抓寵物。bowman需要使用乙個手機才能做這些事情,在不使用依賴注入的情況下,是這樣的 namespace dependency namespace dependency iphone6 iphone6 newi...

筆記 依賴注入

把有依賴關係的類放到容器中,解析出這些類的例項,就是依賴注入。目的是實現類的解耦 例 class a中用到了class b的物件b,一般情況下,需要在a的 中顯式的new乙個b的物件。採用依賴注入技術之後,a的 只需要定義乙個私有的b物件,不需要直接new來獲得這個物件,而是通過相關的容器控制程式來...

完成DI 依賴注入功能

private string configlocations private v1beandefinitionreader reader 用來保證註冊式單例的容器 private mapsingletonbeancachemap new hashmap 用來儲存所有的被 過的物件 從getbean ...