由Spring引出的一些瞎想(1)

在學習Spring的時候,突然想自己寫一個解析XML得到並得到實例對象的方法。



打算分成兩個步驟來完成:

1.解析XML,得到基本信息。

2.由解析得到的內容創建實例對象。



首先來寫一個XML文件,自己給XML文件定義了一系列規則:

XML文件每個Bean中必須有一個class標籤,class標籤內的內容爲要創建的對象的類型。

每個POJO必須有一個構造方法,該構造方法接收的參數是一個List。該List包含有具體的類路徑以及構造方法需要使用的全部屬性。

Bean中存在<param>標籤,對應POJO的構造方法。






XML文件中的參數順序必須嚴格對應構造方法中的參數順序。





然後開始第一步解析XML文件,解析XML文件會得到一個List<List>(記作XMLList),該List內的每個元素,都是一個包含了POJO類構造方法所需要的所有屬性的List<Object>(記作BeanList)






解析XML後得到List<List>,該List的容量,爲xml中要創建的Bean的數量,然後再創建一個方法來根據這個List去生成Bean。


由於事前並不知道具體要創建的類是什麼,所以很自然的需要用到反射方法,同時由於是根據構造方法來創建具體對象,所以也需要用到Constructor類來獲取構造方法,並且由Constructor來創建具體對象。





getBean接受一個包含了XML全部信息的XMLList,這個XMLList中的每個元素是包含了具體到要創建某一個POJO類所需要使用的參數。

getBean創建具體的對象,並且把它儲存到一個List中。





存在的問題:

要求每個類所需的參數數量一致。

必須爲每個類 都創造一個構造方法。

XML中<param>順序要和構造方法中賦值順序嚴格保持一直。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章