国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

spring.net (2)環境搭建 對(1)例子的解釋和擴充

2019-11-17 03:25:03
字體:
來源:轉載
供稿:網友

sPRing.net (2)環境搭建 對(1)例子的解釋和擴充

在上文中的例子實現了spring.net 控制反轉的簡單例子:

但是不免其中會有一些疑問。

例子中的配置文件是什么意思:

  app.config的配置規則可以參考web.config的配置詳情

  

<sectionGroup name="spring">      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />    </sectionGroup>

  加入spring環境支持,注冊了這個節點處理器后,配置文件中的<spring>節點才能起作用。

  <context>節點的type屬性是可選的,在Windows應用中,其默認值就是Spring.Context.Support.xmlapplicationContext

  那么在

  上個例子中我是用了 :

<resource uri="file://objects.xml"></resource>來指定訪問文件的訪問吧objects.xml里的配置信息加入resource中這里的uri常用的還有兩種方式:assembly://程序集名/命名空名/文件名   加載嵌入的資源的xml文件config://spring/objects    直接使用app.config  中的配置 <objectsxmlns="http://www.springframework.net"/>里的配置信息:值得注意的是:xml配置中xmlns="http://www.springframework.net"是必須添加的:在上篇博客里中,容器的實例化:
IApplicationContext ctx = ContextRegistry.GetContext();//直接讀取配置文件重的配置信息。
實際物理路徑
  IResource input = new FileSystemResource(@"D:/Objects.xml");  //實際物理路徑            IObjectFactory factory = new XmlObjectFactory(input);

程序集下尋求配置文件

 string[] xmlFiles = new string[]             {                "file://Objects.xml"            };            IApplicationContext context = new XmlApplicationContext(xmlFiles);            IObjectFactory factory = (IObjectFactory)context;            Console.ReadLine();

  在objects.xml中對對象定義:

  其中:

  對象標識符(id和name):

  一個對象有一個或多個id,id在容器中應該是唯一的,一個對象通常只有一個標識符,如果指定了多個標識符,其余的被認為是別名。

  在xml定義對象時,用id或者name屬性來定義對象的標識符。每個對象都需要用id或name屬性定義至少一個標識符。id屬性允許為對象定義指定一個唯一的id,因為在Spring.NET的shcema文檔中,id被標識為XML元素的ID屬性,XML解析器可以在其它元素引用它的時候進行驗證,在配置對象標識符時,應該優先使用id屬性。但是,id屬性值不能包含任何XML ID不允許使用的字符。如果一定要使用這些字符,應該使用name屬性,在name屬性中也可以通過逗號或分號為對象指定一個或多個別名。

  Singleton和Prototype:

  對象可以通過兩種模式布署:singleton和非singleton(或者叫做prototype,只是用在這里不是很合適)。當一個對象被定義為singleton時,容器中就只會有一個共享的實例,任何時候通過id或別名請求該對象都會返回這個共享實例的引用(也就是說這個對象只會被創建一次)。

  當使用非singleton,或者說原型模式布署時,每次請求對象都會創建新的實例。在某些場合,如果需要為每個用戶返回單獨的用戶對象或其它對象,非singlton布署模式就比較理想。

  如果沒有顯式指定,對象的布署模式默認為singleton。注意非singleton(原型)模式會使Spring.NET在每次請求對象時都創建新的實例,這也許并非是我們預期的行為。所以,除非絕對需要,否則不要使用原型模式。

  property

  對對象的屬性實力還,可以直接指定name="屬性名" value="屬性值"或者 ref="實例化的為另一個對象的id"

  注意:在為泛型類對象指定type屬性的時候要注意:第一,左尖括號<要替換成字符串“&lt;”,因為在XML中左尖括號會被認為是小于號。從可讀性來講,我們都知道這并不是理想的方式。第二,type參數值中不能包含程序集的名稱,因為程序集名稱要求和類型全名用逗號隔開,而在這里逗號已經被用來分隔泛型類的類型參數了。將來可能會用其它字符代替這兩個符號,但目前還沒找到更具可讀性的方案。若要提高可讀性,建議使用類型別名,如下所示:

  

<typeAliases> <alias name="GenericDictionary" type=" System.Collections.Generic.Dictionary&lt;,>" /> <alias name="myDictionary" type="System.Collections.Generic.Dictionary&lt;int,string>" /></typeAliases>

  然后,下面的對象定義:

<object id="myGenericObject"         type="GenericsPlay.ExampleGenericObject&lt;System.Collections.Generic.Dictionary&lt;int , string>>, GenericsPlay" />

  就可以縮短為:

  

<object id="myOtherGenericObject"         type="GenericsPlay.ExampleGenericObject&lt;GenericDictionary&lt;int , string>>, GenericsPlay" />

  或者更短:

<object id="myOtherOtherGenericObject"         type="GenericsPlay.ExampleGenericObject&lt;MyIntStringDictionary>, GenericsPlay" />

使用Spring.NET框架經常用到的一下幾個文件:

Common.Logging.dll(必要)Spring.Core.dll(必要)Spring.Data.dllSpring.Aop.dll(可選)Spring.Data.NHibernate21.dllSpring.Web.dll


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西安市| 永济市| 苗栗市| 长丰县| 隆安县| 高雄市| 萨迦县| 陆丰市| 林西县| 平邑县| 济源市| 永登县| 灵川县| 嵊州市| 龙江县| 潞城市| 毕节市| 保定市| 凭祥市| 西和县| 竹溪县| 渭源县| 广德县| 遂平县| 邵阳县| 台前县| 仲巴县| 潮安县| 施甸县| 普宁市| 灌云县| 连城县| 顺昌县| 宜川县| 耿马| 赤峰市| 沙雅县| 逊克县| 邵东县| 鹰潭市| 新河县|