码迷,mamicode.com
首页 > 编程语言 > 详细

Spring.net介绍及MVC中应用

时间:2017-10-20 10:20:27      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:idt   声明   入口   模式   att   属性   and   service   tor   

 

Spring.net两大核心内容:

  • IOC(控制反转)

传统的面相对象思维模式是对象A依赖对象B,对象B的实例化和调用都在对象A中发生,一旦对象B中发生变化,对象A也要随之变化,这样使得程序间行程了紧密的耦合度

技术分享

IOC是一种编程思想,其理念就是借助于第三方来实现解耦。IOC核心是一个IOC容器,所有对象的控制权全部交给IOC容器,由IOC容器负责创建对象。模式由原来的创建对象--使用对象到被动接收IOC容器创建对象--使用对象,此期间对对象的控制权反生了转变,因此被称为控制反转

技术分享

  • DI(依赖注入)

DI是实现控制反转的一种编程方式,简单来说就是在A对象中需要使用到B对象,则在A对象中必要new B( ),但是假设B对象发生变化,实例化时传入参数发生变化,这时候 就需要修改A的代码。

解决的办法很简单,就是将B作为对象传入,A对象内直接接收  this.b = B ;

 

介绍完原理来看一看使用方法:

1. 下载Spring.net包   下载地址:http://www.springframework.net/download.html

2. 解压并拷贝 \Spring.NET-1.3.1\bin\net\4.0\release 目录下

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

的拓展文件到项目lib目录下,并在Web项目中添加引用

3. 在项目下添加Config目录,创建 controllers.xml 

技术分享

在controllers.xml 中注册控制器类

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

  <object type="MyProject.Controllers.UserInfoController, MyProject" singleton="false" >
    <property name="userInfoService" ref="UserInfoService" />
  </object>

  <!--intentionally do NOT register the AccountController 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.MvcQuickStart.Controllers.AccountController, Spring.MvcQuickStart" singleton="false" />-->
</objects>

object节点用于注册控制器,

type属性下以此声明 命名空间+类名 , 程序集,

property属性用于声明控制器类中的属性,如果是引用类型需要用ref指向其Service.xml下注册对象类的name属性

4. 在Config目录下创建一个Service.xml

技术分享

在此xml文件下注册BLL层中各个类 

<?xml version="1.0" encoding="utf-8" ?>
<objects xmlns="http://www.springframework.net">
  <object type="MyProject.BLL.UserInfoService, MyProject.BLL" singleton="false" name="UserInfoService" >

  </object>
</objects>

5.在Web.config文件下注册以下信息

在<configSections><configSections>节点下添加

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

在根节点<configuration></configuration>节点下添加

  <spring>
    <!--spring.Net配置-->
    <context>
    <!--修改成相应的目录-->
      <resource uri="file://~/Config/controllers.xml"/>
      <resource uri="file://~/Config/Service.xml"/>
    </context>
  </spring>

6.最后别忘了修改Golbal.asax入口文件

    public class MvcApplication : SpringMvcApplication //System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }

至此就已经完成了业务层与逻辑层的解耦

在Controller控制器下仅需要声明属性,程序运行时便会自动传入相应的对象

private IUserInfoService userInfoService { get; set;}

 

Spring.net介绍及MVC中应用

标签:idt   声明   入口   模式   att   属性   and   service   tor   

原文地址:http://www.cnblogs.com/xiaoliwang/p/7697512.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!