首页 > 代码库 > Spring.Net在ASP.NET Mvc里使用的一个小例子

Spring.Net在ASP.NET Mvc里使用的一个小例子

就贴个小例子,就不注意格式了。

1.下载dll

NuGet的下载地址:http://docs.nuget.org/docs/start-here/installing-nuget

在vs的NuGet里搜索spring.web.mvc,它会自动下载SpringNet的引用包。

安装完成之后你的项目会多三个引用,项目目录../packages文件夹下面也会多出这三个文件夹里面是SpringNet的文件。

2.写代码例子

很简单的例子。定义一个接口,一个对于接口的实现类。

namespace MvcApplication2.Models
{
    public interface ITestDao
    {
        string TestShow();
        string TestSayHello();
    }
}

 

namespace MvcApplication2.Models
{
    public class TestDao : ITestDao
    {
        public string TestShow()
        {
            return "这里是测试信息展示!";
        }

        public string TestSayHello()
        { 
            return "hello world!";
        }
    }
}

第一种最基础的方式。直接在代码里实现IOC容器的创建和注册还有调用。

            StaticApplicationContext context = new StaticApplicationContext();
            context.RegisterPrototype("itestDao", typeof(TestDao), null);//itestDao是对TestDao实例注册的一个名字。
            ITestDao itestDao = context.GetObject("itestDao") as TestDao;//这里调用注册的那个名字
            string result = itestDao.TestShow();

第二种附带一点点配置文件。

配置文件在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 xmlns="http://www.springframework.net">
      <object id="itestDao" type="MvcApplication2.Models.TestDao" />
    </objects>
  </spring>

 

            IApplicationContext context = ContextRegistry.GetContext();
            ITestDao itestDao = context.GetObject("itestDao") as TestDao;
            string result = itestDao.TestShow();


第三种跟mvc的整合。

打开mvc里的Global.asax文件

然后将MvcApplication继承的HttpApplication替换成SpringMvcApplication,SpringMvcApplication是Spring.Web.Mvc.dll里面的类。

修改完之后在控制器里加上一个属性testDao属性

然后配置文件里加一个object配置。

<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 xmlns="http://www.springframework.net">
      <object id="itestDao" type="MvcApplication2.Models.TestDao" />
      
      <object type="MvcApplication2.Controllers.HomeController" >
        <property name="testDao" ref="itestDao" />
      </object>
      
    </objects>
  </spring>

ref表示控制器HomeController里testDao属性实例化的是itestDao里的内容。

然后所有的准备就好了。运行程序会根据配置文件里的配置自动实例化HomeController里的testDao

补充内容:

如果需要配置的映射文件太多。可以把objects部分移出web.config文件。

自己现在在根目录重新建立一个springobject.xml文件,这里需要将xml文件的属性设置成嵌入的资源。然后将objects中的内容复制进去。

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
  <object id="itestDao" type="MvcApplication2.Models.TestDao" />

  <object type="MvcApplication2.Controllers.HomeController" singleton="false">
    <property name="testDao" ref="itestDao" />
  </object>

</objects>

 

resource里uri的内容变成file://~/springobject.xml,

如果你的配置文件假设在一个object文件夹里,那路径对应的就是file://~/object/springobject.xml,

Web.config配置内容现在就变成了这样。

<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="file://~/springobject.xml" />
    </context>
  </spring>