Spring.Net功能:
1、控制反轉(IOC):就是創建對象的權利由開發人員自己控制New,轉到了有容器來控制
2、依賴注入(DI):就是通過容器來創建對象的時候,在對象初始化時給一些屬性、構造方法的參數等注入默認值
3、面向切面編程(AOP)
mvc中最典型的AOP:過濾器
?
在MVC中應用Spring.Net:
1、引用相關dll
Common.Logging.dll是Spring.net內使用的日志記錄文件
Spring.Core.dll是Spring.net的核心文件
Spring.Web.dll和Spring.Web.Extensions.dll是針對web的處理和擴展
Spring.Web.Mvc4.dll是針對mvc4做的擴展
2、在mvc項目的根目錄下創建Config文件夾,并在文件夾下創建controller.xml文件
<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net"><object name="UserInfoService" type="類所在的命名空間.類名, 類所在的程序集" singleton="false" ><property name="userInfoService" ref="userInfoService"/></object><object type="類所在的命名空間.類名, 程序集" singleton="false" name="userInfoService" ></object>
<!--intentionally do NOT register the AccountController or the ValuesController with the container; demonstrates that the underlyingdefault controller factory will properly (attempt to!) resolve all controllers not registered with Spring.NETusing its default controller resolution behavoir--><!--<object type="Spring.Mvc4QuickStart.Controllers.AccountController, Spring.Mvc4QuickStart" singleton="false" />--><!--<object type="Spring.Mvc4QuickStart.Controllers.ValuesController, Spring.Mvc4QuickStart" singleton="false" />--> </objects>
每個object都是一個類,type屬性指定類所在的命名空間和程序集,屬性singleton表示是否單例,object下的字節點property關聯類下需要賦默認值的屬性,name值與類中屬性名相同,如何屬性是另一個類,則property中則用ref關聯,否則用value=“默認值”,每個property都對應類中的一個屬性,多個具有默認值的屬性就會有多個property。
3、配置web.config
原樣寫入
4、修改global文件
5、創建使用
IApplicationContext ctx = ContextRegistry.GetContext(); //創建容器.IUserInfoService lister = (IUserInfoService)ctx.GetObject("UserInfoService");//GetObject中傳入的參數與配置文件中Object的name值對應
?
第5步中對象的創建交給容器,是控制反轉IOC
配置文件中對屬性進行默認值賦值是依賴注入
?Spring.Net的AOP暫未用到,等以后使用后記錄......
?