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>
复制代码

 

posted @   十二月雨  阅读(369)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示