您的位置:首页 > 编程语言 > ASP

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

2019-08-18 15:20 1376 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/xiaolu1014/article/details/99703974

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

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节点下添加

[code]<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对象的地方加入两行代码

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

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

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

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: