1. 程式人生 > >Spring net與Asp net Mvc結合示例

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

這裡寫圖片描述