ASP.NET MVC 中使用Spring.NET实现简单的属性注入

使用Spring.NET对ASP.NET MVC中的Controller进行属性的依赖注入可以实现UI层和BLL层的完全解耦,下面通过一个简单的例子来做演示:

  1.下载相关的程序集,点击下载,其中还有很多相关的文档、示例和源码,本文也是根据其中一个Demo写的;

  2.新建一个MVC3的项目,添加一个Home控制器,然后在自动添加的Index Action上添加一个视图,并在Home控制器下添加一个string类型的属性Message,然后通过一个key为MSG的视图数据将Message传递到视图上面去,最后视图将其显示出来;

复制代码
 1 public class HomeController : Controller
 2 {
 3     //
 4     public string Message { set; get; }
 5 
 6     //
 7     // GET: /Home/
 8 
 9     public ActionResult Index()
10     {
11         ViewData["MSG"] = Message;
12         return View();
13     }
14 
15 }
复制代码

 Views/Index.cshtml

复制代码
 1 @{
 2     Layout = null;
 3 }
 4 
 5 <!DOCTYPE html>
 6 
 7 <html>
 8 <head>
 9     <title>Index</title>
10 </head>
11 <body>
12     <div>
13         <h2>@ViewData["MSG"]</h2>
14     </div>
15 </body>
16 </html>
复制代码

 3.引用程序集(下载文件路径:\Spring.NET-2.0.0-M2\Spring.NET\bin\net\4.0\release)

 

4.改变HttpApplication对象,这是关键所在;

1 public class MvcApplication : SpringMvcApplication
2 {
3    //....
4 }

 5.添加配置信息

复制代码
 1 <configSections>
 2   <sectionGroup name="spring">
 3     <section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc3"/>
 4   </sectionGroup>
 5 </configSections>
 6 
 7 <spring>
 8   <context>
 9     <resource uri="file://~/Configs/ControllerObjects.xml"/>
10   </context>
11 </spring>
复制代码

resource节点下面的uri指向的是另一个配置文件:

1 <?xml version="1.0" encoding="utf-8" ?>
2 <objects xmlns="http://www.springframework.net">
3   <object type="SimpleDemo.Web.Controllers.HomeController, SimpleDemo.Web" singleton="false" >
4     <property name="Message" value="欢迎试用ASP.NET MVC3" />
5   </object>
6 </objects>

请求Home控制器下的Index,得到如下的返回:

说明:之所以要将Globel文件中将HttpApplication的父类替换成SpringMvcApplication,因为它为我们指定了一个ControllerFactory,该工厂在创建控制器对象的时候根据我们在配置文件中的配置创建对象、为属性赋值(这里为Message赋值),也许有人会说费这么大的周折是为了哪一出啊,直接在控制器中给Message赋值不就可以了吗?但是,我们要知道该配置文件比改代码的代价要小得多的。另外,这里只是做了一个演示,所以只是对一个string属性做依赖注入,同样,我们完全可以对一个IBLL层的属性进行注入,这样UI层就完全不关心你业务逻辑层的具体实现了(拿到的只是一个IBLL层的接口),然后在切换具体的业务层实现的时候只需要修改配置文件即可(可以是本机的实现,也可以是某个Web服务)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值