ASP.NET MVC使用Spring.NET实现控制反转和依赖注入(一)

一、什么是控制反转和依赖注入呢?

IOC(inversion of control)控制反转模式;控制反转是将组件间的依赖关系从程序内部提到外部来管理; 创建对象的权利由开发人员自己控制New。转到由容器控制。
DI(dependency injection)依赖注入模式;依赖注入是指将组件的依赖通过外部以参数或其他形式注入; 通过容器来创建对象的时候,在对象的初始化时可以给一些属性、构造函数的参数等注入默认值(可以是复杂类型)。

打个比方,我们在项目中会把业务逻辑抽出放于BLL层的各个IService和Service中。控制器调用Service时必须要先实例化Service,也就是要nwe对象。控制反转则将new对象的工作交由容器执行,可以理解为抽象工厂,从而实现解耦。

实现IOC和DI的第三方容器有很多:Spring.NET、Unity等等,今天我们使用到的是Spring.NET。这里就不对Spring.NET做过多的介绍。

二、项目中引用Spring.NET

1.先导入dll文件,可以从NuGet中安装,搜索Spring.Core

2.配置Spring.net

打开web.config文件在configuration节点下添加

<configSections>
    <!-- Spring 的配置 -->
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core" />
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core" />
    </sectionGroup>
  </configSections>
  <spring>
    <context>
      <resource uri="config://spring/objects"/>
    </context>
    <objects>
      <object name="StudentService" type="lxlStudy.BLL.StudentService,lxlStudy.BLL">
      </object>
    </objects>
  </spring>

name="StudentService"表示我要创建的对象名为“StudentService”,

type="lxlStudy.BLL.StudentService,lxlStudy.BLL"。注意中间有逗号隔开,逗号前面表示我要创建lxlStudy.BLL命名空间下的StudentService对象。逗号后面表示程序集为“StudentService,lxlStudy.BLL”。

三、程序中创建容器

在我们刚才需要New对象的地方加入两行代码

 public static IApplicationContext ctx = ContextRegistry.GetContext();
        IStudentService Lister = (IStudentService)ctx.GetObject("StudentService");

代码中的IStudentServic和StudentServic换成自己需要的对象即可。

程序成功运行说明Spring.NET配置成功,程序实现了控制反转

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章