Spring筆記02-Spring容器

  Spring容器要乾的活是解析Bean的配置文件和註解,然後實例化Bean。

  要做解析的工作,就需要一個Reader;要做實例化的工作,就需要一個BeanFactory。

  先講解析Bean的配置文件。配置文件可以是文件、URL資源、InputStream資源等,Spirng把這些配置文件封裝爲Resource,然後從這個Resource實例讀取輸入流,通過輸入流構建InputSource(注意InputSource這個類並不是來自Spring,它的的全名是org.xml.sax.InputSource,就是我們常用來解析xml文件的那個)。有了Resource實例和InputSource實例就可以調用doLoadBeanDefinitons(inputsource,resource)了,這個函數是解析的核心。那爲什麼有了InputSource實例,我們還要用Resource實例?後面馬上講到。

  doLoadBeanDefinitons函數做了三件事:

    (1).獲取對XML文件的驗證模式

    (2).加載XML文件,得到對應的Document

    (3).根據返回的Document註冊Bean信息

  驗證XML文件是爲了保證它的正確性,驗證模式主要有DTD和XSD。怎麼判斷XML文件使用的是哪種驗證模式,這裏就回答了第一個問題,Spring通過resource.getInputStream(),然後new BufferReader(new InputStreamReader(inputStream)),通過這個BufferReader實例一行一行的讀原文件,如果當前行否包含了‘DOCTYPE’,那驗證模式就是DTD,否則就是XSD。

  用sax獲得XML文件對應的Document實例,這裏和我們平時使用sax的方式一樣。

  然後通過Document實例doc.getDocumentElement()獲得根root,調用函數doRegisterBeanDefinitons(root),函數doRegisterBeanDefinitons(root)再調用parseBeanDefinitions(root,this.delegate),這裏就出現了兩種情況:

    (1).解析默認標籤

    (2).解析自定義標籤


2017-07-26更新

  

  

發佈了51 篇原創文章 · 獲贊 22 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章