Spring.net介绍及MVC中应用
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中应用的更多相关文章
- MVC中路由
篇目 介绍 路线的性质 了解缺省路由 用一个例子的路由 结论 介绍 本文介绍了MVC中的路由.如何执行的路线是由路由引擎和如何定义的URL路由. ASP.NET MVC的路由是一个模式匹配系统,负责传 ...
- 浅谈MVC中路由
引言 学习ASP.NET MVC 路由这一关是肯定必不可少的.这一节,我们就来简单介绍下MVC中的路由机制.简单的路由机制相信大家都已了解,这一节主要介绍路由中很少使用的部分. 使用静态URL片段 在 ...
- Spring Batch 中文参考文档 V3.0.6 - 1 Spring Batch介绍
1 Spring Batch介绍 企业领域中许多应用系统需要采用批处理的方式在特定环境中运行业务操作任务.这种业务作业包括自动化,大量信息的复杂操作,他们不需要人工干预,并能高效运行.这些典型作业包括 ...
- ASP.NET MVC 中解决Session,Cookie等依赖的方式
原文:https://blog.csdn.net/mzl87/article/details/90580869 本文将分别介绍在MVC中使用Filter和Model Binding两种方式来说明如何解 ...
- Http请求中Content-Type讲解以及在Spring MVC中的应用
引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值 ...
- Spring MVC中处理静态资源的多种方法
处理静态资源,我想这可能是框架搭建完成之后Web开发的”头等大事“了. 因为一个网站的显示肯定会依赖各种资源:脚本.图片等,那么问题来了,如何在页面中请求这些静态资源呢? 还记得Spring MVC中 ...
- Spring MVC 中的REST支持
本部分提供了支持 RESTful web 服务的主要 Spring 功能(或注释)的概述. @Controller 使用 @Controller 注释对将成为 MVC 中控制器的类进行注释并处理 HT ...
- Http请求中Content-Type讲解以及在Spring MVC中的应用【转】
完全引用自: http://blog.csdn.net/blueheart20/article/details/45174399#t1 此文讲得很清晰,赞! 引言: 在Http请求中,我们每天都在 ...
- Http请求中Content-Type和Accept讲解以及在Spring MVC中的应用
在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在 ...
随机推荐
- JIRA 资源
https://www.**.com/article/2015/8/7/22532.html e_v_g_e_t JIRA使用教程:在Windows上安装JIRAJIRA使用教程:在Linux上安装J ...
- 记录一次OOM分析过程
工具: jstat jmap jhat 1.jstat查看gc情况 S0C.S1C.S0U.S1U:Survivor 0/1区容量(Capacity)和使用量(Used) EC.EU:Eden区容量和 ...
- 限制input输入字符数(中文2个字符,英文1个字符)
input的maxlength可以限制input的输入的字符数,但是是字符串的长度,相当于判断str.length;然而经常会有中文字符算2个字符英文算1个字符的需求,目前只能通过编写代码来实现. & ...
- Maven编译错误记录:Some Enforcer rules have failed
一.错误信息 添加httpclient与httpcore依赖后编译Maven报错. 错误信息如下: Failed to execute goal org.apache.maven.plugins:ma ...
- C#对Mongodb数组对象操作
Mongo对数据的存储非常随意,需要修改对象中的数组对象时,就会变得比较复杂. 类中的类对象可以直接通过“.”例如:Department.User.name 类中的对象User是数组时可以用Depar ...
- vo和pojo
pojo直接描述数据库中的表和字段,一一对应 vo的话,可以多添加些属性,比如code对应的name,或者标识符等等 查询列表的时候也可以直接用vo,但是修改或添加记录必须是pojo QueryVo ...
- Kong网关介绍与安装小记
本文主要为kong安装小记,系统环境为centos 6.7 本文转载请注明出处 —— xiaoEight 介绍 Kong 是在客户端和(微 ...
- sql脚本长度限制及linux下文件切分
无意翻出以前笔记,切分sql文件,每10万条加一个commit.半天都想不起来应用的场景,能想起来的再加上查的资料记录一下. 在Oracle数据库中,频繁的commit会引起大量Redo Log的物理 ...
- webview自总结
2,webview ---- 运行时不调用系统自带浏览器: 1,安卓webview post传值问题: 11,WebView基本功能(html5.文件下载和远程URL) 10,webview--网络超 ...
- 安装MySQL_Python时出现is not a supported wheel on this platform.
MySQL-Python 数据库驱动安装 pip install mysql_python失败 不支持windows操作系统 解决: 自行下载安装 下载网站 http://www.lfd.uci.ed ...