AutoFac学习摘要
依赖注入(控制反转)
常见的依赖注入工具:AutoFac,Spring.Net,Unity等
依赖注入的方式:1.通过构造函数进行注入2.通过属性进行注入
注意:在项目中AutoFac的注入有两次,第一次是将数据访问层的类注入到业务逻辑层。第二次是将业务逻辑层的类注入到UI层。
AutoFac在MVC的使用
我在APP_Start文件夹中新建了一个类命名为AutoFacConfig
定义一个静态的无返回的方法
public static void Register()
{
//1.0 创建一个autofac的容器对象
var bulider = new ContainerBuilder();
//1.0.1 获取程序集载入到Assembly对象中
Assembly controllerDll = Assembly.Load("Study.CRM.Site");
//1.0.1 告诉autofac对象将来实例化的控制器所存在的程序集是Study.CRM.Site.dll
bulider.RegisterControllers(controllerDll);
#region 2.0 仓储的注册
//2.0 利用bulider对象开始创建仓储的实现类与对应的仓储接口的对应关系
//注意:如果加了InstancePerHttpRequest() 每次都是的新的实体进行注入操作
//注册单个仓储来到其对应的接口
//bulider.RegisterType(typeof(sysFunctionRepository)).As(typeof(IsysFunctionRepository)).InstancePerHttpRequest();
//注册程序中所有的类到其实现接口
Assembly repositoryAss = Assembly.Load("Study.CRM.Repository");
bulider.RegisterTypes(repositoryAss.GetTypes()).AsImplementedInterfaces();
#endregion
#region 3.0 业务逻辑层的注册
//3.0 利用bulider对象开始创建业务逻辑实现类与对应的业务逻辑接口的对象关系
//单个注册业务逻辑类到其对应的接口
//bulider.RegisterType(typeof(sysFunctionServices)).As(typeof(IsysFunctionServices)).InstancePerHttpRequest();
//注册业务逻辑程序中的所有类到其实现的接口(AsImplementedInterfaces() 此方法:就是用来自动转成接口的)
Assembly servicesAss = Assembly.Load("Study.CRM.Services");
bulider.RegisterTypes(servicesAss.GetTypes()).AsImplementedInterfaces();
//注册当前程序中类型名称的前缀为sysFunction 的所对应类的实例
//bulider.RegisterTypes(servicesAss.GetTypes().Where(c => c.Name.StartsWith("sysFunction")).ToArray()).AsImplementedInterfaces();
#endregion
//4.0 告诉MVC框架将来所有控制器的对象的创建工作交给autofac.dll中的控制器工厂来完成
//特点:会利用控制器中的有参数构造函数创建其对象,同时在创建的过程中,会根据构造函数中的
//接口参数,将此接口的具体实现类的对象注入
//4.0.1 根据已经注册好的组建创建此容器对象中所有的映射关系的具体实现
var container = bulider.Build();
// 4.0.2 将MVC的控制器对象实例 交由autofac来创建
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
在global文件中进行注册
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
//注册区域路由规则
AreaRegistration.RegisterAllAreas();
//注册全局过滤器
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
//注册网站路由
RouteConfig.RegisterRoutes(RouteTable.Routes);
//优化js,css文件
BundleConfig.RegisterBundles(BundleTable.Bundles);
//利用AutoFac实现项目的IOC和DI
AutoFacConfig.Register();
}
}
AutoFac学习摘要的更多相关文章
- CSS学习摘要-定位实例
CSS学习摘要-定位实例 注:全文摘自MDN-CSS定位实例 列表消息盒子 我们研究的第一个例子是一个经典的选项卡消息框,你想用一块小区域包括大量信息时,一个非常常用的特征.这包括含有大信息量的应用, ...
- CSS学习摘要-定位
CSS学习摘要-定位 注:全文摘自MDN-CSS定位 定位允许您从正常的文档流布局中取出元素,并使它们具有不同的行为,例如放在另一个元素的上面,或者始终保持在浏览器视窗内的同一位置. 本文解释的是定位 ...
- CSS学习摘要-引入样式
CSS学习摘要-引入样式 注:主要是摘录自MDN 网络开发者这个网站的. CSS 实际上如何工作? 当浏览器显示文档时,它必须将文档的内容与其样式信息结合.它分两个阶段处理文档: 浏览器将 HTML和 ...
- a byte of vim -- 学习摘要
说在前面的话 -- a byte of vim 是我见过的最介绍vim 最好的书,想了解强大的vim的人,或者是已经在使用vim而打算进一步了解的人,我感觉都应该看看这个,内容精炼但涵盖非常广,--& ...
- Spring Boot 学习摘要--关于日志框架
date: 2020-01-05 16:20:00 updated: 2020-01-08 15:50:00 Spring Boot 学习摘要--关于日志框架 学习教程来自:B站 尚硅谷 1. 关于日 ...
- Spring Boot 学习摘要--关于配置
date: 2019-12-27 09:00:00 updated: 2019-12-30 13:20:00 Spring Boot 学习摘要--关于配置 学习教程来自:B站 尚硅谷 1. 关于配置 ...
- Python正则表达式学习摘要及资料
摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会匹配 4 个 a,但 a{2 ...
- Python 正则表达式学习摘要及资料
来源:Michael_翔_ 摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会 ...
- 高性能Web动画和渲染原理系列(4)“Compositor-Pipeline演讲PPT”学习摘要
目录 摘要 1.合成流水线 2. 预定义UI层 3. paint是什么意思 4. 分层的优势和劣势 5. 视图属性及其处理方式 6. Quads 7. Compositor Frame 8. 关于光栅 ...
随机推荐
- 在js中,window != top 的作用
在网站的首页加上下面的javascript,就可以把自己的窗口变成是最前端的窗口.可以避免别人把你的网站放在他的iframe中,显示的就是他的网站了,误导浏览者. <script type=&q ...
- Struts2的validator和WEB-INF下页面交互以及路径问题
当我使用短路校验器时(客户端),在页面下方老是出来 FreeMarker template error!然后我就把我的页面都放在了WEB-INF中,结果很多路径都不对了,因为客户端是没有直接访问Str ...
- 视频swiper轮播
关于本次文章的内容,实际上是咪咕阅读详情页中的一个前端需求要做的效果,不过比起原需求,此次案例已经被删减掉许多部分了.音频部分舍弃,调用客户端接口舍弃,并做一些整理.最后留下的是这个精简版的案例.方便 ...
- css3-逐帧动画
time,这里有两个时间,前面一个是规定完成这个动画所需要的时间,全称叫animation-duration,第二个time为动画延迟开始播放的时间,全称叫animation-delay,这两个数值可 ...
- 第三方登录 ----QQ登录
学习之前,请大家先看一下oAuth协议. 首先呢,我们进入QQ互联的官方网站 http://connect.qq.com登入我们自己的QQ号,没有QQ号的小伙伴可以忽略本篇博文分享!
- windows下搭建tensorflow的环境
这年头,不会点人工智能和神经网络,都不好意思跟人打招呼了.之前搞了一下sklearn,今天觉得应该要了解一下google这个传说中的人工智能开源神器. 最近终于有时间了,凡事从hello world开 ...
- EntityFramework Core高并发深挖详解,一纸长文,你准备好了吗?
前言 之前有关EF并发探讨过几次,但是呢,博主感觉还是有问题,为什么会觉得有问题,其实就是理解不够透彻罢了,于是在项目中都是用的存储过程或者SQL语句来实现,利用放假时间好好补补EF Core并发的问 ...
- 我是如何处理大并发量订单处理的 KafKa部署总结
今天要介绍的是消息中间件KafKa,应该说是一个很牛的中间件吧,背靠Apache 与很多有名的中间件搭配起来用效果更好哦 ,为什么不用RabbitMQ,因为公司需要它. 网上已经有很多怎么用和用到哪的 ...
- Struts2基础学习(六)—文件的上传和下载
一.文件的上传 1.单个文件上传 Struts2使用拦截器完成了文件的上传,而且底层使用的也是FileUpload开源组件. 客户端注意事项: (1)method="post&qu ...
- 看Lucene源码必须知道的基本规则和算法
上中学的时候写作文,最喜欢的季节我都是写冬天.虽然是因为写冬天的人比较少,那时确实也是对其他季节没有什么特殊的偏好,反而一到冬天,自己皮肤会变得特别白.但是冬天啊,看到的只有四季常青盆栽:瓜栗(就是发 ...