我在上一篇关于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的人气太低了,希望对这有兴趣的朋友多多探讨,更希望这方面的高手能多指教。如文章中发现
错误希望大家留言提出,我门大家一起学习,改进。
本文配套源码
你怎么样对待别人被人就怎么样对待你。