MVC中使用Spring.net

前面学习了使用Autofac来实现控制反转,这里简单记录Spring.Net实现IoC和DI的步骤

第一步:安装如下Nuget包 (Spring.Web.Mvc)

    install-package spring.core
    install-package spring.web
    install-package spring.web.mvc5
    install-package spring.web.extensions
              install-package microsoft.aspnet.webapi

第二步:配置spring.net

  ①  在MVC项目下添加Config文件夹,新增俩个xml:controllers.xml,services.xml,右键属性,将这俩个xml的输出目录改为总是输出
  Controllers.xml内容:
<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
<description>An example that demonstrates simple IoC features.</description>
<!--object的name可以自定义,property中的属性name不能自定义-->
<object type="ZZDX.GZZD2.WebApp.Controllers.UserInfoController,ZZDX.GZZD2.WebApp" singleton="false">
<property name="userInfoBll" ref="UserInfoService"/> 注:userInfoBll是cotroller中的属性名
</object>
</objects>

  Services.xml内容

<?xml version="1.0" encoding="utf-8" ?>
<objects>
<object type="ZZDX.GZZD2.Bll.UserInfoService,ZZDX.GZZD2.Bll" singleton="false" name="UserInfoService">
</object>
</objects>
   ②   修改web.config
<configSections>
<!--spring.net 2-1 配置开始-->
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc5" />
</sectionGroup>
<!--spring.net 2-1 配置结束 -->
</configSections>
<!--spring.net 2-2 配置开始 -->
<spring>
<context>
<resource uri="file://~/Config/controllers.xml" />
<resource uri="file://~/Config/services.xml" />
</context>
</spring>
<!--spring.net 2-2 配置结束 -->

第三步:修改Global.asax.cs的父类

 public class MvcApplication : Spring.Web.Mvc.SpringMvcApplication //System.Web.HttpApplication

第四步:简单测试

  还是使用上一节中获取用户列表的例子,注意:需要修改一下Controller.xml和Services.xml中的节点。

  在使用时每次添加一个Controller只需在Controllers.xml中添加一个object节点,为Controller注入依赖只需在该Controller节点添加一个property节点;添加一个服务时在Services.xml中添加一个object节点,用起来十分简单。

   public class UserInfoController : Controller
{
//spring.net会自动获取一个IUserInfoService的实例
private IUserInfoService userInfoBll;
public ActionResult Index()
{
List<UserInfo> users= userInfoBll.GetUsers();
ViewBag.users = users;
return View();
}
}

显示结果如下:

补充:在普通的项目中使用Spring.net可参考博文http://blog.csdn.net/zhaobw831/article/details/78039380

IoC之Spring.Net在Mvc项目中的使用的更多相关文章

  1. 转 mvc项目中,解决引用jquery文件后智能提示失效的办法

    mvc项目中,解决用Url.Content方法引用jquery文件后智能提示失效的办法   这个标题不知道要怎么写才好, 但是希望文章的内容对大家有帮助. 场景如下: 我们在用开发开发程序的时候,经常 ...

  2. 谈谈MVC项目中的缓存功能设计的相关问题

    本文收集一些关于项目中为什么需要使用缓存功能,以及怎么使用等,在实际开发中对缓存的设计的考虑 为什么需要讨论缓存呢? 缓存是一个中大型系统所必须考虑的问题.为了避免每次请求都去访问后台的资源(例如数据 ...

  3. 在 ASP.NET MVC 项目中使用 WebForm、 HTML

    原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...

  4. MVC项目中如何判断用户是在用什么设备进行访问

    使用UAParser在C#MVC项目中如何判断用户是在用什么设备进行访问(手机,平板还是普通的电脑) 现在我们开发的很多web应用都要支持手机等移动设备.为了让手机用户能有更加好的用户体验,我们经常为 ...

  5. 在已有的Asp.net MVC项目中引入Taurus.MVC

    Taurus.MVC是一个优秀的框架,如果要应用到已有的Asp.net MVC项目中,需要修改一下. 1.前提约定: 走Taurus.MVC必须指定后缀.如.api 2.原项目修改如下: web.co ...

  6. ASP.NET MVC项目中App_Code目录在程序应用

    学习ASP.NET MVC,如果你是开发ASP.NET MVC项目的,也许你去为项目添加前ASP.NET项目的APP_Code目录,在这里创建与添加的Class类,也许你无法在MVC项目所引用. 那这 ...

  7. 如何在mvc项目中使用apiController

    文章地址:How do you route from an MVC project to an MVC ApiController in another project? 文章地址:How to Us ...

  8. 在ASP.NET MVC项目中使用极验验证(geetest)

    时间 2016-03-02 18:22:37 smallerpig 原文  http://www.smallerpig.com/979.html 主题 ASP.NET MVC   geetest开发体 ...

  9. spring MVC项目中,欢迎页首页根路径到底是怎么设置的

    0. 问题: 如何改mvc中项目的欢迎页,或者叫做根路径 一个东西快弄完了,就剩下一个问题,应该是个小问题.就是mvc项目的欢迎页,怎么给改下呢. 这个项目是通过mvn建立的,整个项目的原型就是spr ...

随机推荐

  1. Neo4j学习案例【转】

    转自 打怪的蚂蚁 CSDN: https://blog.csdn.net/xgjianstart/article/details/77285334 neo4j有社区版本和企业版.社区版本是免费的,只支 ...

  2. TDD中测试替身学习总结

    在使用TDD开发时,经常会遇到需要被测对象需要依赖其他子系统的情况,但是你希望将测试代码跟依赖项隔离,以保证测试代码仅仅针对当前被测对象或方法展开,这时候你需要的是测试替身.测试替身可以分为四类:- ...

  3. HTML的input类型为hidden导致无法reset改字段的value问题

    问题关键:根据HTML规范,hidden是非ui类元素,不接受用户处理.所以form的 reset并不影响它. http://stackoverflow.com/questions/6367793/w ...

  4. PP-物料清单用户处理手册

    1 系统操作时间 1. 新旧物料的替换需有BOM的产生2. BOM中组件发生变化时需有BOM的更改2 系统操作权限角色编码 角色名称Z:PP_PS_007_1000_200 PP主数据维护员 3 适应 ...

  5. HashMap的实现原理--链表散列

    1.    HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. ...

  6. JavaScript 数据类型检测总结

    JavaScript 数据类型检测总结 原文:https://blog.csdn.net/q3254421/article/details/85483462 在js中,有四种用于检测数据类型的方式,分 ...

  7. copy elison & RVO & NRVO

    蓝色的博文 To summarize, RVO is a compiler optimization technique, while std::move is just an rvalue cast ...

  8. 【总结】 Lucas定理

    \(Lucas\)定理: \(C^x_y≡C^{x/p}_{y/p}*C^{x\%p}_{y\%p} ~~(mod~p)\) 证明不会2333 void pre(){ A[0]=A[1]=B[0]=B ...

  9. 洛谷 P1691 有重复元素的排列问题 解题报告

    P1691 有重复元素的排列问题 题目描述 设\(R={r_1,r_2,--,r_n}\)是要进行排列的\(n\)个元素.其中元素\(r_1,r_2,--,r_n\)可能相同.使设计一个算法,列出\( ...

  10. py3+requests+urllib+bs4+threading,爬取斗图图片

    实现原理及思路请参考我的另外几篇爬虫实践博客 py3+urllib+bs4+反爬,20+行代码教你爬取豆瓣妹子图:http://www.cnblogs.com/UncleYong/p/6892688. ...