Spring.net(二)—-初探IOC容器

我在上一篇关于Spring.net的文章“Spring.NET框架简介及模块说明 ”中很详细的介绍了,本文就不旧话从提。我门就直奔主题吧。

1.首先了解两个接口.

IObjectFactory接口和IApplicationContext接口:他两个称为“容器”或“IOC容器”。

Spring.net框架的核心原则是非侵入性。

IObjectFactory接口是初始化、配置及管理对象的实际容器。

IObjectFactory全限定名为Spring.Objects.Factory.IObjectFactory,IObjectFactory接口有多个实现,其中最

常用的是Spring.Objects.Factory.XML.XmlObjectFactory。

2.对象定义的XML文件

在app.config或是web.config中加入

       

注意:context的type属性是可以省略的。

3.spring和context的顺序是有限制的,在Spring.net框架里已经将“spring/context”作为字符串常量定义在了AbstractApplicationContext类中以来表示上下文的接点名称。可通过:

IApplicationContext context=ContextRegistry.GetContext();来获取接点值,这里要注意一点。在使用他的时候必须要使配置文件中的接点起作用,这样就得必须在.NET的配置文件节点下注册类Spring.Context.Support.ContextHandler,它让ContextRegistry类可用来初始化应用程序上下文,它实现在FCL的IConfigurationSectionHandler接口

3.XML对象定义可在节点注册

4.Spring.net的IOC容器的简单实例—-用简单三层来实现

光说这么多没用,我门还是来点实际的,看看下面的这个简单实例:

一.先建立项目随后添加引用Spring.Core程序集。

二.引用System.Configuration—-需要用到ConfigurationManager类的方法。

三.配置.NET配置文件—-具体配置如下:

             

    

                                               

四.建立好项目的实体类和接口以及实现借口。

下面是实例程序的结构图:Model(实体层),Service(接口),Compontent(实现接口的业务逻辑),SimpleTest(测试)

五.首先看看实体层的定义,我相信代码大家都看得懂就不多说了,直接贴上来。

using System;  using System.Collections.Generic;  using System.Text;  namespace Spring.Demo.Model  {   ///

   /// 用户类   ///

   public class Users   {     ///

     /// 编号     ///

     private int _oid;     public int Oid     {       get { return _oid; }       set { _oid = value; }     }     ///

     /// 姓名     ///

     private string _name;     public string Name     {       get { return _name; }       set { _name = value; }     }     ///

     /// 性别     ///

     private string _sex;     public string Sex     {       get { return _sex; }       set { _sex = value; }     }     ///

     /// 年龄     ///

     private int _age;     public int Age     {       get { return _age; }       set { _age = value; }     }   }  }

六.在看接口的定义

using System;   using System.Collections.Generic;   using System.Text;   namespace Spring.Demo.Service   {     public interface IUsers     {      ///

      /// 返回用户的详细信息的方法      ///

      ///       string GetUserInfo();    }   }七.实现接口方法的逻辑

using System;   using System.Collections.Generic;   using System.Text;   using Spring.Demo.Service;   using Spring.Demo.Model;   namespace Spring.Demo.Compontext   {     public class UsersCompontents:IUsers     {      public UsersCompontents()      { }      #region 获取用户信息      public string GetUserInfo()      {       Users user = new Users();        user.Oid = 1;        user.Name = "Beniao";        user.Sex = "Boy";        user.Age = 25;        return string.Format("编号:{0}-->姓名:{1}--->性别:{2}--->年龄:{3}",          user.Oid,          user.Name,          user.Sex,          user.Age);      }      #endregion    }   }

八.通过Spring.net的IOC容器IApplicationContext从config文件中取得程序集信息和调用方法实现控制反转

//从config文件中取得程序集信息   IApplicationContext context = ConfigurationManager.GetSection("spring/context")                   as IApplicationContext;   //调用方法   //Users为config文件里的配置节   //   //   IUsers user = context.GetObject("Users") as IUsers;   Console.WriteLine(user.GetUserInfo());   Console.Read();

运行结果如下:

关于Spring.net的IOC容器就简单介绍在这里了,我也是刚学Spring.net,文章里难免会出现错误,目前

Spring.net的人气太低了,希望对这有兴趣的朋友多多探讨,更希望这方面的高手能多指教。如文章中发现

错误希望大家留言提出,我门大家一起学习,改进。

本文配套源码

你怎么样对待别人被人就怎么样对待你。

Spring.net(二)—-初探IOC容器

相关文章:

你感兴趣的文章:

标签云: