首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Spring.NET(二):深入 IOC 容器與依賴注入實作

     編輯:Java 相關知識

核心介面介紹

Spring.NET 框架核心原則為非侵入性。兩大核心介面:

  • IObjectFactory:初始化、配置與管理對象的實際容器,常用實現為 XmlObjectFactory。
  • IApplicationContext:IObjectFactory 的擴展,增加資源載入、事件傳播、國際化等企業級功能。

配置檔結構

在 app.config 或 web.config 中註冊 Spring 區段與對象定義:

<configuration>
  <configSections>
    <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="Users" type="Spring.Demo.Compontext.UsersCompontents,Spring.Demo.Compontent"/>
    </objects>
  </spring>
</configuration>

三層架構實作範例

實體層

namespace Spring.Demo.Model {
  public class Users {
    public int Oid { get; set; }
    public string Name { get; set; }
    public string Sex { get; set; }
    public int Age { get; set; }
  }
}

服務介面

namespace Spring.Demo.Service {
  public interface IUsers {
    string GetUserInfo();
  }
}

業務邏輯實作

namespace Spring.Demo.Compontext {
  public class UsersCompontents : IUsers {
    public string GetUserInfo() {
      Users user = new Users { Oid = 1, Name = "Beniao", Sex = "Boy", Age = 25 };
      return string.Format("編號:{0}--->姓名:{1}--->性別:{2}--->年齡:{3}", 
        user.Oid, user.Name, user.Sex, user.Age);
    }
  }
}

客戶端調用與控制反轉

透過 ConfigurationManager.GetSection 獲取上下文,再由容器解析對象:

IApplicationContext context = ConfigurationManager.GetSection("spring/context") as IApplicationContext;
IUsers user = context.GetObject("Users") as IUsers;
Console.WriteLine(user.GetUserInfo());

運行結果

專案結構圖

專案結構:Model、Service、Compontent、SimpleTest

總結

本文示範了 Spring.NET IOC 容器的基本配置與三層架構下的依賴注入實作。透過 XML 定義對象與依賴,客戶端無需直接實例化具體類別,實現了鬆耦合設計。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved