021. Spring.Net简单入门之三: Spring.Net和MVC的结合
1. 先复制一点文件:
打开Spring.NET\examples\Spring\Spring.Mvc4QuickStart\Spring.Mvc4QuickStart\Web.config文件, 复制如下内容到自己项目的Web.config中:
Spring.NET\examples\Spring\Spring.Mvc4QuickStart\Spring.Mvc4QuickStart\Web.config文件中要复制的内容
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc4"/>
</sectionGroup>
<!------------------------------------------------------------------------------------------------->
<spring>
<context>
<resource uri="file://~/Config/controllers.xml"/>
<resource uri="file://~/Config/objects.xml"/>
</context>
</spring>
将上面的内容粘贴到自己项目的Web.config中(部分代码):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!--Entity Framework块配置-->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
<!--复制到这里来作为Sprign.Net的块配置-->
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc4"/>
</sectionGroup>
</configSections>
<!--spring复制到这里来 作为Spring.net的容器的配置节点-->
<spring>
<context>
<resource uri="file://~/Config/service.xml"/>
<resource uri="file://~/Config/controllers.xml"/>
</context>
</spring>
............
2. 开始添加引用, 添加引用的时候, 最好将Spring.NET\bin\net\4.0\release下的所有dll文件都复制到当前项目的packages\Spring.Net目录下, 其中Spring.Net需要自己建
,然后添加下图的六个引用到项目中去:


3. 修改Global.asax文件
//未引用Spring.Net之前的Global.asax文件
namespace muTian.sysAdmin.UI.Portal
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
//修改后的文件, 主要只修改继承
namespace muTian.sysAdmin.UI.Portal
{
public class MvcApplication : Spring.Web.Mvc.SpringMvcApplication //System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
}
4. 复制Config文件夹, 到项目中; 直接复制整个文件夹(使用显示所有文件使其显示出来), 这样的话, Web.config中的配置就不用怎么改变

5. 修改controllers.xml文件如下内容:
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net" default-autowire="constructor">
<!--保证type一定是类的全路径名称, 保证type=" , " 逗号后面的就是类所在的程序集的名称-->
<object type="muTian.sysAdmin.UI.Portal.Controllers.UserInfoController, muTian.sysAdmin.UI.Portal" singleton="false" >
<!--singleton="false" 表示每次创建对象的时候, 是否以单例模式创建, True表示是用单例模式创建, false表示不是用单例模式创建, 其中要注意的是True其实是默认值-->
<property name="userInfoService" ref="UserInfoService" />
</object>
<object type="muTian.sysAdmin.UI.Portal.Controllers.OrderInfoController, muTian.sysAdmin.UI.Portal" singleton="false" >
<property name="orderInfoService" ref="OrderInfoService" />
</object>
</objects>
修改service.xml文件如下内容:
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
<object name="userInfoService" type="muTian.SysAdmin.BLL.UserInfoService, muTian.SysAdmin.BLL" singleton="false" >
</object>
<object name="orderInfoService" type="muTian.SysAdmin.BLL.OrderInfoService, muTian.SysAdmin.BLL" singleton="false" >
</object>
</objects>
6. 控制器主要代码:
UserInfoController控制器:
using muTian.SysAdmin.BLL;
using muTian.SysAdmin.IBLL;
using muTian.SysAdmin.Mode;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace muTian.sysAdmin.UI.Portal.Controllers
{
public class UserInfoController : Controller
{
//使用Spring.Net来进行依赖注入, 注意哦, 这里如果依赖注入不成功的话, 肯定是报错的, 因为这里仅仅对userInfoService属性进行了定义, 但是并没有做任何赋值操作,下面就直接引用了, 因为所有的复制操作全部都交由Spring.Net来注入
public IUserInfoService userInfoService
{
get; set;
}
public ActionResult Index() //创建视图, 选择类型为UserInfo, 模型选择list
{
ViewData.Model = userInfoService.GetUsers(u => true).ToList();
//(u=>1=1)
return View();
}
public ActionResult Create() //创建视图, 选择类型为Create, 模板为Create
{
return View();
}
[HttpPost]
public ActionResult Create(UserInfo userInfo)
{
if (ModelState.IsValid)
{
userInfoService.Add(userInfo);
}
return RedirectToAction("Index");
}
}
}
OrderInfoController控制器主要代码:
namespace muTian.sysAdmin.UI.Portal.Controllers
{
public class OrderInfoController : Controller
{
// GET: OrderInfo
public IOrderInfoService orderInfoService
{
get;set;
}
public ActionResult Index()
{
ViewData.Model = orderInfoService.GetUsers(u => true).ToList();
return View();
}
}
}
7.预览:

浙公网安备 33010602011771号