标签:idt 声明 入口 模式 att 属性 and service tor
Spring.net两大核心内容:
传统的面相对象思维模式是对象A依赖对象B,对象B的实例化和调用都在对象A中发生,一旦对象B中发生变化,对象A也要随之变化,这样使得程序间行程了紧密的耦合度
IOC是一种编程思想,其理念就是借助于第三方来实现解耦。IOC核心是一个IOC容器,所有对象的控制权全部交给IOC容器,由IOC容器负责创建对象。模式由原来的创建对象--使用对象到被动接收IOC容器创建对象--使用对象,此期间对对象的控制权反生了转变,因此被称为控制反转
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;}
标签:idt 声明 入口 模式 att 属性 and service tor
原文地址:http://www.cnblogs.com/xiaoliwang/p/7697512.html