简单的Spring.Net示例

原创 2005年03月02日 10:17:00

简单的Spring.Net示例

    Spring.NET是Java上Spring框架的.net移植版,目前版本为RC2,包含全功能的IOC容器,后续版本将包含AOP、ASP.NET、Remoting和数据存取。
    IOC将接口的具体实现实例化过程转移,不再采用硬编码,改由IOC容器来实例化,IOC容器读取配置文件,再通过反射来实例化接口的具体实现,达到调用调用者和被调用者解耦目的,与工厂模式相比解耦更彻底。
关于IOC的更多信息可以参考文章
http://www.martinfowler.com/articles/injection.html

相关资源下载:
http://www.springframework.net/
程序也可以从这里下载
http://sourceforge.net/projects/springnet/

这个例子演示一下动物吃草,狗吃肉,羊吃草,例子中可能有不当之处,仅仅是为了演示,请勿钻牛角尖

1、新建一个项目,引用Spring.Core;

2、新建两接口:IAnimal和IFood

 public interface IAnimal
 {
  string Eat(int qty);//吃多少
 }

 public interface IFood
 {
  string Name//食物名
  {
   get;
   set;
  }

  string Unit//食物的计量单位
  {
   get;
  }

 }

3、新建两动物:Dog和Sheep

 public class Dog : IAnimal
 {
  private IFood _food;
  private string _name;

  public Dog(string name)//狗名
  {
   _name = name;
  }

  public IFood Food//吃的
  {
   set
   {
    _food = value;
   }
   get
   {
    return _food;
   }
  }

  public string Eat(int qty)//吃了啥
  {
   return string.Format("Dog {0} ate {1} {2} {3}",_name,qty,_food.Unit,_food.Name);
  }
 }

 public class Sheep : IAnimal
 {
  ...//同Dog,如果你愿意,可以重构一下用继承:)

  public string Eat(int qty)
  {
   return string.Format("Cat {0} ate {1} {2} {3}",_name,qty,_food.Unit,_food.Name);
  }
 }

4。新建两配置文件:app.config和sheep.config

app.config内容:
<?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>
   
        <context>
            <resource uri="config://spring/objects"/>
        </context>
       
        <objects>
            <description>An  example that demonstrates simple IoC features.</description>
     <!--
            动物接口的具体实现,狗名旺财,吃鲜猪肉
            -->
            <object name="anAnimal" type="SpringTest.Dog, SpringTest">
  <constructor-arg index="0">
                    <value>WangCai</value>
                </constructor-arg>
                <property name="food">
                    <ref object="trueFood" />
                </property>
            </object>

            <!--
            实现真正的食物
            -->
            <object name="trueFood" type="SpringTest.Meat, SpringTest">
                <property name="Name">
                    <value>Fresh Pig Meat</value>
                </property>
            </object>
        </objects>

    </spring>
   
</configuration>

sheep.config内容:
 <?xml version="1.0" encoding="utf-8" ?>
        <objects>
            <description>An  example that demonstrates simple IoC features.</description>
     <!--
            动物接口的具体实现,多利羊吃草
            -->
            <object name="anAnimal" type="SpringTest.Sheep, SpringTest">
  <constructor-arg index="0">
                    <value>Dolly</value>
                </constructor-arg>
                <property name="food">
                    <ref object="trueFood" />
                </property>
            </object>

            <object name="trueFood" type="SpringTest.Grass, SpringTest">
                <property name="Name">
                    <value>Green Grass</value>
                </property>
            </object>
        </objects>

5、新建一窗体,放两按钮,一文本框

using System.Configuration;
using Spring.Context;
using Spring.Context.Support;

加入方法:
 private void Display(IApplicationContext ctx)
 {
  try
  {
   IAnimal a = ctx.GetObject("anAnimal") as IAnimal;
   this.textBox1.Text = a.Eat(3);
  }
  catch (Exception ex)
  {
   this.textBox1.Text = ex.Message;
  }
 }

按钮事件:
 Display(ConfigurationSettings.GetConfig("spring/context") as IApplicationContext);

 Display(new XmlApplicationContext("sheep.config"));

附:如果需要原程序,请去油箱csharpdp@163.com获取,为防误删除,放在已删除文件夹,口令为csharpdp。

如果运行时出错并显示..Spring.Core强名称...请运行sn -Vr *,65e474d141e25e07

相关文章推荐

ASP.NET Spring.Net 入门1 简单入门示例

Spring.Net 简介 从http://www.springframework.net/download.html 下载spring.NET,解压后得到源码和编译好的dll 新建项目...
  • xundh
  • xundh
  • 2017年04月21日 21:57
  • 270

SPRING.NET 1.3.2 学习2--快速入门应用示例说明

Movie Finder:一个使用依赖注入运用Spring IOC容器的例子 Application Context:演示了IoC容器特性如定位、访问ResourceSet对象、应用资源到对象属...

Spring.net+NHibernate示例源码

  • 2009年12月06日 21:40
  • 7.41MB
  • 下载

Spring.NET IOC简单DEMO

首先,进行材料准备。我准备了一个MODEL类,一个SERVICE类 // Person.cs namespace Model { public class PersonModel { ...

Spring.Net 简单入门学习

Spring.NET IoC容器的用法。 通过简单的例子学习Spring.Net 1、先创建一个控制台程序项目。 2、添加IUserInfoDal 接口。 namespac...
  • lai1314
  • lai1314
  • 2016年05月25日 17:03
  • 236

【ITOO】——Spring.net基础及简单使用

概述     通过Spring.NET,我们可以用统一且透明的方式来配置应用程序。Spring.NET的重点是为中间层提供声明式事务管理,以及一个功能齐全的ASP.NET扩展框架。     Sprin...

C# ActiveMQ 和Spring.NET框架开发示例

  • 2013年04月26日 12:25
  • 1.06MB
  • 下载

使用spring.net+nibernate时如何用aspnet_regiis加密数据库连接字符串

使用spring.net+nibernate时数据库连接往往是放在一个 字段中的 不能使用aspnet_regiis直接加密 解决办法是引入一个专门负责键值对应的配置节 在这个配...
  • rav009
  • rav009
  • 2013年01月19日 23:23
  • 1145

SPRING.NET 1.3.2 学习4 --实例化对象

在Spring.NET下实例化对象有几种方法1.使用构造器object id="exampleObject" type="Examples.ExampleObject, ExamplesLibrary...
  • lee576
  • lee576
  • 2013年02月28日 13:48
  • 2142

Spring.NET学习笔记13——AOP的概念(基础篇)

上篇我们简单的了解了AOP的应用场景,知道AOP编程的重要性。这篇我们先看一段代码,来开始今天的学习。  回顾与上篇类似的代码:SecurityService类的IsPass判断用户名为“admin”...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单的Spring.Net示例
举报原因:
原因补充:

(最多只允许输入30个字)