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节点下添加
[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配置成功,程序实现了控制反转
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- 使用Spring.Net 1.3.2实现Container(IoC)(二)ASP.NET MVC、ControllerFactory
- ASP.NET MVC 中使用Spring.NET实现简单的属性注入
- ASP.NET MVC中使用Spring.Net实现IOC和DI
- ASP.NET MVC 中使用Spring.NET实现简单的属性注入
- Spring 使用注解的方式实现IOC和DI(控制反转和依赖注入)
- 在ASP.NET MVC中实现基于URL的权限控制
- 在ASP.NET MVC中实现基于URL的权限控制
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能 [转]
- 使用ASP.NET MVC 4 Async Action+jQuery实现消息通知机制的实现代码
- Asp.net下使用HttpModule模拟Filter,实现权限控制
- ASP.NET MVC验证 - 使用哪种方式实现客户端服务端双重异步验证
- ASP.NET MVC 中如何实现基于角色的权限控制
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能
- ASP.NET MVC 中实现基于角色的权限控制的处理方法
- 扩展ASP.NET MVC三层框架并使用StructureMap实现依赖注入1-Model层的实现
- ASP.NET MVC中使用Dropzone.js实现图片的批量拖拽上传
- 在 Asp.NET MVC 中使用 SignalR 实现推送功能
- asp.net MVC 使用signalR +bootstrap 实现 progressBar
- 搭建你的Spring.Net+Nhibernate+Asp.Net Mvc 框架 (三)实现数据库接口层和业务逻辑层(转)