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节点,用起来十分简单。
1 public class UserInfoController : Controller 2 { 3 //spring.net会自动获取一个IUserInfoService的实例 4 private IUserInfoService userInfoBll; 5 public ActionResult Index() 6 { 7 List<UserInfo> users= userInfoBll.GetUsers(); 8 ViewBag.users = users; 9 return View(); 10 } 11 }
显示结果如下:
补充:在普通的项目中使用Spring.net可参考博文http://blog.csdn.net/zhaobw831/article/details/78039380