spring.Net之Ioc在MVC中的使用

1.引入dll

Common.Logging.dll
Spring.Core.dll
Spring.Web.dll
Spring.Web.Extensions.dll
Spring.Web.Mvc4.dll

2.将案例中的Config文件夹拷到本项目中。

把examples>Spring>Spring.Mvc4QuickStart>Spring.Mvc4QuickStart>Config文件夹复制到项目中

3.修改config文件夹中的相关配置

打开config文件夹中的controllers.xml文件可以看到文件中的就是上前一篇文章中说的objects

<?xml version="1.0" encoding="utf-8" ?><objects xmlns="http://www.springframework.net">

  <object type="Spring.Mvc4QuickStart.Controllers.HomeController, Spring.Mvc4QuickStart" singleton="false" >
    <property name="Message" value="Welcome to ASP.NET MVC4 powered by Spring.NET!" />
  </object>

  <object type="Spring.Mvc4QuickStart.Controllers.SuffixController, Spring.Mvc4QuickStart" singleton="false" >
    <property name="Suffix" value="_Spring.NET_was_Here!" />
  </object>

  <object type="Spring.Mvc4QuickStart.Controllers.OdataController, Spring.Mvc4QuickStart" singleton="false" />

  <!--intentionally do NOT register the AccountController or the ValuesController with the container; demonstrates that the underlying
  default controller factory will properly (attempt to!) resolve all controllers not registered with Spring.NET
  using its default controller resolution behavoir-->
  <!--<object type="Spring.Mvc4QuickStart.Controllers.AccountController, Spring.Mvc4QuickStart" singleton="false" />-->
  <!--<object type="Spring.Mvc4QuickStart.Controllers.ValuesController, Spring.Mvc4QuickStart" singleton="false" />--></objects>

<object>节点中放的是类的实例,控制器也是一个类,<property>中放的是类的属性,控制器中怎么来属性呢?

本来控制器中调用BLL中的类时是:

IBLL.IOA_UserInfoService userInfoService = new BLL.OA_UserInfoService();

改写成:

IBLL.IOA_UserInfoService userInfoService{get;set;}

这样就可以把userInfoService变成属性。

其中OA_UserInfoService也是一个类,<object>中就变成:

<!-- type="命名空间全名,程序集名-->
  <object type="BZIndexOA.WebUI.Controllers.UserInfoController,BZIndexOA.WebUI" singleton="false" >
    <property name="userInfoService" ref="OA_UserInfoService" />
  </object>

  <object name="OA_UserInfoService" type="BZIndexOA.BLL.OA_UserInfoService,BZIndexOA.BLL" singleton="false" >
  </object>

4.修改web.config中的配置信息

在<configuration>节点下的<configSections>中加上

<sectionGroup name="spring"><!-- Spring.Net配置-->
      <section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc4"/>
    </sectionGroup>

然后在<configuration>节点中加上

<spring><!-- Spring.Net配置-->
    <context>
      <resource uri="file://~/Config/controllers.xml"/>
    </context>
  </spring>
  <!-- Spring.Net配置结束-->

配置信息如下:

现在以经算是完成了spring.Net在MVC中的配置了

 //IBLL.IOA_UserInfoService userInfoService = new BLL.OA_UserInfoService();
        IBLL.IOA_UserInfoService userInfoService{get;set;}

上面代码可以代替注释部分且正常运行了。

5.可以将Config/controllers.xml文件中的配置信息分离(把控制器的配置和业务类的配置分离)

在Config文件夹中新建一个services.xml文件,添加内容:

<?xml version="1.0" encoding="utf-8" ?><objects xmlns="http://www.springframework.net">
  <!-- type="命名空间全名,程序集名-->
  <object name="OA_UserInfoService" type="BZIndexOA.BLL.OA_UserInfoService,BZIndexOA.BLL" singleton="false" >
  </object></objects>

然后把controllers.xml文件中的 <object name="OA_UserInfoService" type="BZIndexOA.BLL.OA_UserInfoService,BZIndexOA.BLL" singleton="false" >删除。

然后在web.config的context节点中加上刚才的配置文件,变成:

<context>
      <resource uri="file://~/Config/controllers.xml"/>
      <resource uri="file://~/Config/services.xml"/>
    </context>

这时controllers.xml中的是控制器的配置,services中是业务类中的配置。

配置完成,运行程序查看效果。

时间: 2024-09-29 20:46:39

spring.Net之Ioc在MVC中的使用的相关文章

IOC 在Mvc中的使用

IOC,是控制反转(Inversion of Control)的英文简写, 控制反转一般分为两种类型,依赖注入(Dependency Injection)和依赖查找(Dependency Lookup).依赖注入应用比较广泛.本文就简单说说IOC在MVC中 的依赖注入的使用方法. 我新建了一个mvc 项目在 HomeController 中这样写: 1         public DataService dataService { get; set; }2 3         public H

[MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置)

到现在,我们已经基本搭建起了项目的框架,但是项目中还存在一个问题,就是尽管层与层之间使用了接口进行隔离,但实例化接口的时候,还是引入了接口实现类的依赖,如下面的代码: private IUserService _userService; private IUserService UserService { get { return _userService ?? (_userService = new UserService()); } set { _userService = value; }

Spring MVC中的DispatcherServlet作用

一. DispatcherServlet是前端控制器设计模式的实现,提供Spring Web MVC的集中访问点,而且负责职责的分派,而且与Spring IoC容器无缝集成,从而可以获得Spring的所有好处. DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 1.文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析: 2.通过HandlerMapping,将请求映射到处理器(返回一个HandlerEx

ContextLoaderListener和Spring MVC中的DispatcherServlet学习

DispatcherServlet介绍 DispatcherServlet是Spring前端控制器的实现,提供Spring Web MVC的集中访问点,并且负责职责的分派,与Spring IoC容器无缝集成,从而可以获得Spring的所有好处. DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下: 1.文件上传解析,如果请求类型是multipart将通过MultipartResolver进行文件上传解析:2.通过HandlerMapping,将请求映射到处

Spring MVC中处理静态资源的多种方法

处理静态资源,我想这可能是框架搭建完成之后Web开发的”头等大事“了. 因为一个网站的显示肯定会依赖各种资源:脚本.图片等,那么问题来了,如何在页面中请求这些静态资源呢? 还记得Spring MVC中的DispatcherServlet吗?它是Spring MVC中的前置控制器,若配置的拦截路径为“/”,那么所有的请求都将被它拦截.对静态资源的访问也属于一个请求,那么也会被它拦截,然后进入它的匹配流 程,我们知道它是根据HandlerMapping的配置来匹配的.而对于静态资源来说,默认的Spr

spring MVC 中获取request

spring MVC中如何获取request 呢? 有如下方式: 方式一:在action中注入request 直接在action的参数中增加HttpServletRequest request 例如 /*** * 返回json * @param id * @param roleLevel * @param model * @param request * @param targetView * @return * @throws SecurityException * @throws NoSuc

Spring MVC中一般类使用service

在Spring MVC中,Controller中使用service只需使用注解@Resource就行,但是一般类(即不使用@Controller注解的类)要用到service时,可用如下方法: 1.SpringContextUtil package com.test.framework.utils; import org.springframework.beans.BeansException; import org.springframework.beans.factory.NoSuchBea

spring mvc中的文件上传

使用commons-fileupload上传文件所需要的架包有:commons-fileupload 和common-io两个架包支持,可以到Apache官网下砸. 在配置文件spring-mvc.xml中配置上传: <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> //文件上传最大是多少 <

Spring MVC中拦截器HandlerInterceptorAdapter中的preHandle方法

拦截器:顾名思义,就是对请求进行拦截,做一些预处理.后处理或返回处理的操作 Spring MVC中使用拦截器的方法,继承HandlerInterceptorAdapter类,并根据需求实现其中的preHandle方法(预处理).postHandle方法(返回处理),afterCompletion方法(后处理). public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object han