Spring.NET 通过配置文件实现IOC

/*
 * 由SharpDevelop创建。
 * 用户: Changweihua
 * 日期: 2013/6/7
 * 时间: 16:43
 *
 * changweihua@outlook.com
 * http://www.cmono.net
 *
 *
要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
using Spring.Context;
using Spring.Context.Support;
/// <summary>
/// 控制反转的意思是依赖对象(控制权)发生转变,由最初的类本身来管理依赖对象转变为IoC框架来管理这些对象,使得依赖脱离类本身的控制,从而实现松耦合。
/// </summary>
namespace SpringNet1
{
    class Program
    {
        public static void Main(string[] args)
        {
                                       
            NormalMethod();
                                       
            Console.WriteLine("---------------------------------------------");
                                       
            FactoryMethod();
                                       
            Console.WriteLine("---------------------------------------------");
                                       
            IoCMethod();
                                       
            Console.ReadKey(true);
        }
                                   
                                   
        public static void NormalMethod()
        {
            IPersonDao dao = new PersonDao();
        dao.Save();
        Console.WriteLine("我是一般方法");
        }
                                   
        public static void FactoryMethod()
        {
            IPersonDao dao = DataAccess.CreatePersonDao();
        dao.Save();
        Console.WriteLine("我是工厂方法");
        }
                                   
        static void IoCMethod()
        {
//          try
//          {
                                           
                IApplicationContext ctx = ContextRegistry.GetContext();
            IPersonDao dao = ctx.GetObject("PersonDao") as IPersonDao;
            if (dao != null)
            {
            dao.Save();
                Console.WriteLine("我是IoC方法");
            }
//          }
//          catch (Exception ex)
//          {
//              Console.WriteLine(ex.Message + "\n" + ex.StackTrace);
//          }
                                       
                                       
    }
                                   
    }
}

/*
 * 由SharpDevelop创建。
 * 用户: Changweihua
 * 日期: 2013/6/7
 * 时间: 16:48
 *
 * changweihua@outlook.com
 * http://www.cmono.net
 *
 *
要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
namespace SpringNet1
{
    /// <summary>
    /// Description of IPersonDao.
    /// </summary>
    public interface IPersonDao
    {
        void Save();
    }
                       
    public class PersonDao : IPersonDao
  {
    public void Save()
        {
            Console.WriteLine("保存 Person");
        }
    } 
}

/*
 * 由SharpDevelop创建。
 * 用户: Changweihua
 * 日期: 2013/6/7
 * 时间: 16:49
 *
 * changweihua@outlook.com
 * http://www.cmono.net
 *
 *
要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
 */
using System;
namespace SpringNet1
{
    /// <summary>
    /// Description of DataAccess.
    /// </summary>
    public static class DataAccess
    {
        public static IPersonDao CreatePersonDao()
        {
        return new PersonDao();
        }
    }
}

<?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>
        <sectionGroup name="common">
            <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
        </sectionGroup>
    </configSections>
    <spring>
        <context>
            <resource uri="config://spring/objects" />
        </context>
        <objects xmlns="http://www.springframework.net">
            <object id="PersonDao" type="SpringNET1.PersonDao, SpringNET1" />
        </objects>
    </spring>
    <common>
        <logging>
            <!--<factoryAdapter type="Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter, Common.Logging">
                <arg key="level" value="ALL" />
                <arg key="showLogName" value="true" />
                <arg key="showDataTime" value="true" />
                <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" />
            </factoryAdapter>-->
            <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging">
                <arg key="level" value="ALL" />
                <arg key="showLogName" value="true" />
                <arg key="showDataTime" value="true" />
                <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" />
            </factoryAdapter>
            <!--<factoryAdapter type="Common.Logging.Elmah.ElmahLoggerFactoryAdapter, Common.Logging.Elmah">
                <arg key="MinLevel" value="all"/>
            </factoryAdapter>-->
        </logging>
    </common>
       
    <!-- Can not be placed at the top -->
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
    </startup>
</configuration>


知识共享许可协议
《Spring.NET 通过配置文件实现IOC》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     152.62ms