手寫spring IOC容器

2021-10-23 21:32:45 字數 2569 閱讀 7868

基本思路

解析xml配置檔案

根據配置的生成相應的物件

將物件存入ioc容器

ioc容器實現**

<?xml version=

"1.0" encoding=

"utf-8"?>

"address" class=

"com.example.xmlsax_reader.entity.address"

>

"city" value=

"fuzhou"

>

"user" class=

"com.example.xmlsax_reader.entity.user"

>

"username" value=

"tom"

>

"address" ref=

"address"

>

1.建立實體類

@data

public class user

@data

public class address

2.封裝bean和property,對應配置檔案中的bean節點和property節點

@data

public class bean

@data

public class property

3.用於解析配置檔案.xml的類

public class xmlconfig  catch (documentexception e)

//定義xpath,取出所有的bean

string xpath =

"//bean"

; //對bean進行遍歷

list list = doc.selectnodes(xpath)

; if(list!=null)

} //id是不應重複的

if(configmap.containskey(id))

//將bean封裝到map中

configmap.put(id, bean);}

}return configmap;

}}

4.初始化ioc容器,生成物件放入容器中

public inte***ce beanfactory 

//定義乙個ioc容器

//所謂的容器,在**中的表現形式其實就是個集合,我們使用hashmap來作為容器

private map ioc;

private map config;

/*** 建構函式

* 1. 初始化ioc容器

* 2. 載入配置檔案,生成bean物件放入ioc容器

* @param path

*/}}

/*** 根據bean生成物件例項

* @param bean

* @return

*/private object createbean(bean bean)

catch (classnotfoundexception e)

try catch (exception e)

//將bean的屬性封裝到物件中

if(bean.getproperties(

)!= null)

catch (exception e)

} //情況二:配置檔案中使用的是ref屬性注入

if(p.getref(

)!= null)

else catch (exception e)}}

}}return object;

} @override

public object getbean(string beanname)

}

beanutil工具類

public class beanutil 

}} catch (nosuchmethodexception e)

return method;

}}

測試類

public class test 

/*** 測試ioc容器

*/private static void testioc(

) /**

* 測試讀取配置檔案

*/private static void testconfig()}

}

手寫spring ioc容器遇到的坑

寫web的時候發現,tomcat啟動起來,但是無法注入自己手寫的bean物件,查了原因發現,tomcat啟動有自己的容器,換句話說,不會初始化我寫的容器,解決辦法是,自己手寫了 在web.xml中配置 來完成容器物件中beans的初始化。tomcat生命名週期及容器初始化過程 為什麼是servlet...

(一)手寫spring IOC容器

設計bean工廠介面 如何告訴他建立bean?建立什麼bean?bean工廠實現 畫完整uml類圖 編寫 測試總結 1.ioc是什麼?ioc inversion of control 控制反轉,也稱依賴倒置反轉。反 依賴物件的獲得權被反轉了,由自己建立,變為從ioc容器獲取,和自動注入。2.帶來什麼...

手寫SpringIOC 實現原理

spring ioc 指的是控制反轉,ioc容器負責例項化 定位 配置應用程式中的物件及建立這些物件間的依賴。交由spring來管理這些,實現解耦 使用反射機制 xml技術 手寫spring專題 xml方式注入bean 手寫spring 專題xml 方式注入 bean publicclass xml...