Sprign解析xml配置使用dom4j.app
public class DocumentHelper{ //聲明map存放節點 private Map<String, Document> docs = new HashMap<String, Document>(); public Document getDocument(String filePath) { //用HashMap先根據路徑獲取文檔 Document doc=this.docs.get(filePath); if (doc==null) { //dom4j的解析獲得doc … this.docs.put(filePath, doc); //若是爲空,把路徑和文檔放進去 } return this.docs.get(filePath); } }
public class ElementHelper{ //聲明map存放節點 private Map<String, Element> elements=new HashMap<String, Element>(); //往集合增長元素 public void addElements(Document doc) { //獲取document的elements節點,而且放入集合中 … } //獲取集合元素 public Element getElement(String id) { return elements.get(id); } //獲取全部的元素 Collection<Element> getElements(){…} }
public class BeanCreatorHelper{ //空構造器 public Object createBeanUseDefaultConstruct(String className) { return = Class.forName(className).newInstance(); } //執行方法 … //其餘set方法還原等等 … }
public class ApplicationContextHelper { protected ElementHelper elementHelper = new ElementHelper(); protected Map<String, Object> beans = new HashMap<String, Object>(); //獲取具體的對象實例,也是咱們使用Spring框架中用的最多的一個方法 public Object getBean(String id) { Object bean = this.beans.get(id); if (bean == null) { //一、獲取到配置文件中的節點 Element e = elementHelper.getElement(id); //二、經過bean創造器BeanCreatorHelper,經過反射機制得到對象,而且放到map集合中。 ... } return bean; }
從Document的創造,再到Element的建立,再到解析Element,到applicationContext的實現。這一過程在編碼中是按照順序進行的,是不可逆的。真正的代碼結構遠比我上面提到的要複雜的不少。好比applicationContextHelper中,還有其餘的自動注入方法等等,須要更深刻的瞭解。框架