spring.net框架學習筆記
spring.net框架是用於解決企業應用開發的復雜性的一種容器框架,它的一大功能IOC(控制反轉),通俗解釋就是通過spring.net框架的容器創建對象實體,而不是通過程序員new出來。只要在spring.net的相應xml中配置節點,在獲取對象的時候就可以通過
IApplicationContext ctx = ContextRegistry.GetContext();
UserInfoDal dal = ctx.GetObject("UserInfoDal") as UserInfoDal;
來創建實體對象,這樣就可以在XML里通過配置修改或者替換UserInfoDal類,降低程序對服務類的依賴性,符合軟件設計中的OCP(開閉原則),提高軟件的可擴展性。IOC也叫DI(依賴注入),這兩種不同的叫法可以這樣理解,在應用程序整體中理解為控制反轉(控制權交由應用程序),在容器對對象實例化的角度叫做DI(依賴對象通過xml配置文件讓外部容器將其注入到程序中)。
1.引用相應dll文件Common.Logging.dll和Spring.Core.dll
2.使用Spring.net需要配置應用程序的配置文件:
1 <?xml version="1.0" encoding="utf-8" ?> 2 <configuration> 3 4 <configSections> 5 6 <!--Spring配置節點--> 7 <sectionGroup name="spring"> 8 <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/> 9 <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" /> 10 </sectionGroup> 11 <!--Spring配置節點結束--> 12 13 </configSections> 14 15 16 <!--Spring配置節點--> 17 <spring> 18 19 <context> 20 <!--選擇XML文件的位置,3種方式,1 配置文件 2 定位文件 3 程序集--> 21 <resource uri="config://spring/objects"/> 22 <!-- <resource uri="file://objects.xml"/>--> 23 <!--<resource uri="assembly://SpringNetTest/SpringNetTest/objects1.xml"/>--> 24 </context> 25 <objects xmlns="http://www.springframework.net"> 26 27 <!--此處配置各種要注入的實體對象--> 28 <object name="OrderInfo" type="SpringNetTest.OrderInfo,SpringNetTest"> 29 <property name="Id" value="1"/> 30 <property name="Good" value="食品"/> 31 </object> 32 <!--autowire="constructor"根據構造函數注入 au--> 33 <object name="UserInfoDal" type="SpringNetTest.UserInfoDal,SpringNetTest" autowire="byType"> 34 <constructor-arg name="Id" value="2"/> 35 <!--<constructor-arg name="OrderInfo" ref="OrderInfo"/>--> 36 </object> 37 <object name="UserInfo" type="SpringNetTest.UserInfo,SpringNetTest"> 38 <property name="Id" value="1"/> 39 <property name="Name" value="jayjay"/> 40 <property name="OrderInfo" ref="OrderInfo"/> 41 </object> 42 </objects> 43 44 </spring> 45 <!--Spring配置節點結束--> 46 47 </configuration>
ps:<object name="對象名" type="命名空間名稱.類名,程序集名">
3.通過
IApplicationContext ctx = ContextRegistry.GetContext();
UserInfoDal dal = ctx.GetObject("UserInfoDal") as UserInfoDal;
創建容器上下文對象,接着創建服務類實體對象,對象即可與手動new出來一樣正常使用。
