程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> Spring.Net學習筆記(2)-依賴注入,spring.net學習筆記

Spring.Net學習筆記(2)-依賴注入,spring.net學習筆記

編輯:C#入門知識

Spring.Net學習筆記(2)-依賴注入,spring.net學習筆記


一、開發環境

操作系統:Win10

編譯器:VS2013

framework版本:.net 4.5

Spring版本:1.3.1

二、涉及程序集

Spring.Core.dll

Common.Loggin.dll

三、項目結構

namespace SpringNetIoc.IScene { public interface IBall { void DoSport(); } }

2.新建兩個實現接口IBall的具體類

namespace SpringNetIoc.Scene
{
  public  class Basketball:IBall
    {
        public void DoSport()
        {
            Console.WriteLine("打籃球");
        }
    }
}
namespace SpringNetIoc.Scene
{
    public class Tennis : IBall
    {
        public void DoSport()
        {
            Console.WriteLine("打網球");
        }
    }
}

3.新建一個Person類

namespace SpringNetIoc.Role
{
    public class Person
    {
        public IBall Ball { get; set; }

        public void Hobby()
        {
            Ball.DoSport();
        }
    }
}

4.配置Spring.net

<?xml version="1.0" encoding="utf-8" ?>
<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 xmlns="http://www.springframework.net">
    <context>
      <resource uri="config://spring/objects"></resource>
    </context>
    <objects xmlns="http://www.springframework.net">
      <object name="basketball" type="SpringNetIoc.Scene.Basketball,SpringNetIoc"></object>
      <object name="tennis" type="SpringNetIoc.Scene.Tennis,SpringNetIoc"></object>
      <object name="person" type="SpringNetIoc.Role.Person,SpringNetIoc">
        <!--<property name="Ball" ref="basketball"></property>-->
        <property name="Ball" ref="tennis"></property>
      </object>
    </objects>
  </spring>
  
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

5.在控制台中,輸出結果

namespace SpringNetIoc
{
    class Program
    {
        static void Main(string[] args)
        {
            IApplicationContext context = ContextRegistry.GetContext();
            Person person = context.GetObject("person") as Person;
            person.Hobby();
            Console.Read();
        }
    }
}

五、程序說明

在一定程度上解決了Person與IBall耦合的問題,但是實際上並沒有完全解決耦合,只是把耦合放到了xml文件中。通過一個容器在需要的時候把這個依賴關系形成,即把需要的接口實現注入到需要它的類中。IoC模式可以看做是:容器+工廠。只不過這個大工廠裡要生成的對象都是在xml文件中給出定義的。

六、參考文章

http://www.cnblogs.com/GoodHelper/archive/2009/10/26/SpringNET_DI.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved