Spring net与Asp net Mvc结合示例

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

一、闲话

  因为项目要用到Ioc框架,所以要为Ioc框架选型,优秀的Ioc框架好几款,例如:sping.net,castle,unity……当然还不止三款,还有其它的Ioc框架,castle跟unity使用上比较相近,spring.net跟前两者使用上差异较大些。资料、文档和博文方面spring.net>castle>unity。这三个都有大的强大的团队支持,我感觉spring.net做得最好,无论更新力度、文档和示例都很给力。

  鉴于spring.net的功能、资料文档、博文等比较完善丰富,再加上本人对spring.net相对较熟悉一些,人员培训等都较容易,因此选用了spring.net作为项目的Ioc框架。

二。Spring.net与Asp.net MvC结合的入门示例

1)依赖组件

这里需要用到Spring.net以下组件:

Common.Logging.dll

Spring.Core.dll

Spring.Web.Mvc.dll

2)环境搭建

入门示例习惯都从Hello world开始,这次也不例外

首先,创建一个Asp.net mvc项目:

我们在Model文件夹里新建一个IHello接口和一个Hello实现类

IHello接口

复制代码
public interface IHello

{

string SayHelloWorld();

}
复制代码

Hello实现类

复制代码
public class Hello : IHello

{

public string SayHelloWorld()

     {

return "Hello World!";

     }

}
复制代码

在SayHelloWorld方法中return了一个字符串”Hello world!”。

让我们来测试它吧,在HomeController里我们写下如下代码:

HomeController类

复制代码
public class HomeController : Controller

    {

public IHello hello = new Hello();



public ActionResult Index()

        {

            ViewBag.Message = hello.SayHelloWorld();



return View();

        }



public ActionResult About()

        {

return View();

        }

}
复制代码

我们实例化了一个Hello对象,硬编码的方式,先运行一下看看效果:

上面运行一切正常,好了让我们来引入spring.net

3)引入spring组件

上面提到的spring.net的组件引入到工程里面来:

 

4)修改web.config添加Spring配置:

 web.config

复制代码
 <configSections>

    <sectionGroup name="spring">

      <section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc"/>

    </sectionGroup>

  </configSections>



  <spring>

    <context>

      <resource uri="~/Configs/Spring.xml"/>

    </context>

  </spring>
复制代码

我们引用了另外的一个xml文件Spring.xml,用于配置对象和设置相关依赖。

5)移除掉具体的实现

在配置对象之前,我们先把HomeController代码改一改,移除掉具体的实现:

复制代码
  public class HomeController : Controller

    {

public IHello Hello { get; set; }



public ActionResult Index()

        {

            ViewBag.Message = this.Hello.SayHelloWorld();



return View();

        }



public ActionResult About()

        {

return View();

        }

    }
复制代码

6)配置对象和设置相关依赖

Spring.xml

复制代码
<?xml version="1.0" encoding="utf-8" ?>

<objects xmlns="http://www.springframework.net">

  <object id="Hello" type="SpringMvcApp.Models.Hello, SpringMvcApp"/>

  <object type="SpringMvcApp.Controllers.HomeController, SpringMvcApp" singleton="false">

    <property name="Hello" ref="Hello"/>

  </object>

</objects>
复制代码

这里需要注意一点的是,对象默认配置是单例的,Controller不是单例的,所以这里把singleton设置为false。

是否这样就已经配置完成了,让我们来测试一下。

很遗憾,并没得到我们想要的对象实例。

7)继承Spring.Web.Mvc.SpringMvcApplication类

喀,好像忘了些什么,仅仅只是配置配好了,spring.net的容器还没有接管这一切……

在这我们只需要让Global.asax文件的MvcApplication类继承于Spring.Web.Mvc.SpringMvcApplication类即可,根据需要override相关方就可以了,很简单是吧。

MvcApplication类 

复制代码
 public class MvcApplication : Spring.Web.Mvc.SpringMvcApplication

    {

protected override void RegisterRoutes(RouteCollection routes)

        {

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(

"Default", // Route name

"{controller}/{action}/{id}", // URL with parameters

new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults

            );

        }

    }
复制代码

改好后,我们再运行一下程序,这下有木有?

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/yrryyff/article/details/83743334
今日推荐