ASP.NET MVC使用Spring.NET實現控制反轉和依賴注入(一)

一、什麼是控制反轉和依賴注入呢?

IOC(inversion of control)控制反轉模式;控制反轉是將組件間的依賴關係從程序內部提到外部來管理; 創建對象的權利由開發人員自己控制New。轉到由容器控制。
DI(dependency injection)依賴注入模式;依賴注入是指將組件的依賴通過外部以參數或其他形式注入; 通過容器來創建對象的時候,在對象的初始化時可以給一些屬性、構造函數的參數等注入默認值(可以是複雜類型)。

打個比方,我們在項目中會把業務邏輯抽出放於BLL層的各個IService和Service中。控制器調用Service時必須要先實例化Service,也就是要nwe對象。控制反轉則將new對象的工作交由容器執行,可以理解爲抽象工廠,從而實現解耦。

實現IOC和DI的第三方容器有很多:Spring.NET、Unity等等,今天我們使用到的是Spring.NET。這裏就不對Spring.NET做過多的介紹。

二、項目中引用Spring.NET

1.先導入dll文件,可以從NuGet中安裝,搜索Spring.Core

2.配置Spring.net

打開web.config文件在configuration節點下添加

<configSections>
    <!-- Spring 的配置 -->
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core" />
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core" />
    </sectionGroup>
  </configSections>
  <spring>
    <context>
      <resource uri="config://spring/objects"/>
    </context>
    <objects>
      <object name="StudentService" type="lxlStudy.BLL.StudentService,lxlStudy.BLL">
      </object>
    </objects>
  </spring>

name="StudentService"表示我要創建的對象名爲“StudentService”,

type="lxlStudy.BLL.StudentService,lxlStudy.BLL"。注意中間有逗號隔開,逗號前面表示我要創建lxlStudy.BLL命名空間下的StudentService對象。逗號後面表示程序集爲“StudentService,lxlStudy.BLL”。

三、程序中創建容器

在我們剛纔需要New對象的地方加入兩行代碼

 public static IApplicationContext ctx = ContextRegistry.GetContext();
        IStudentService Lister = (IStudentService)ctx.GetObject("StudentService");

代碼中的IStudentServic和StudentServic換成自己需要的對象即可。

程序成功運行說明Spring.NET配置成功,程序實現了控制反轉

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章