spring.net 框架分析(三)ContextRegistry.GetContext()


我們通過ContextRegistry.GetContext()建立了一個IApplicationContext得實例,那么這個實例具體是怎么建立的了。

我們來分析一下容器實例建立的過程:

我們在配置文件中加入了:


  

[xhtml]  view plain  copy
 
  1. <sectionGroup name="<a href="http://lib.csdn.net/base/javaee" class='replace_word' title="Java EE知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>spring</a>">  
  2.   <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>  
  3.  </sectionGroup>  

 

配置文件明明是Spring.Context.Support.ContextHandler類,與容器有什么關系了?

  Spring.Context.Support.ContextHandler 類繼承IConfigurationSectionHandler。(.net Framework 2.0以后要求繼承ConfigurationSection類,IConfigurationSectionHandler類被否決。)提供了配置節點spring.context的處理。我們只需要在節點spring.context中提供容器的配置,系統就會按配置生成容器。

在Spring.Context.Support.ContextHandler 類中我們有這樣一個屬性:

  protected virtual Type DefaultApplicationContextType 
        { 
            get { return typeof (XmlApplicationContext); } 
        }

這里的默認程序容器類型為XmlApplicationContext,也就是說我們實際建立的容器類型是XmlApplicationContext。

下面我們來看下類XmlApplicationContext.

t

從上圖我們可以看出XmlApplicationContext類是IApplicationContext接口的一個實現,當然直接實現類是AbstractApplicationContext。

總結:當我們調用ContextRegistry.GetContext()取得容器時,系統會按照配置文件使用XmlApplicationContext類建立一個IApplicationContext得實例。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM