ABP 框架从源码学习——abp框架启动核心类AbpBootstrapper(2)
来源:互联网 发布:防盗芯片编程器 编辑:程序博客网 时间:2024/06/06 02:28
在AbpBootstrapper中的两个至关重要的属性:IIocManager 和 IAbpModuleManager
IIocManager内部包装了一个Castle的依赖注入容器IWindsorContainer(abp使用的是Castle windor框架,在此框架的基础上做了一些封装),
所有类型的注册,解析还有后面实现的AOP机制的拦截器都是注册在该容器中的,将具体的注册还有解析功能分别包含在其父接口IIocRegistrar和IIocResolver中
其中IIocRegistrar类的类图如下:
1.AddConventionalRegistrar,
2.RegisterAssemblyByConvention(Assembly assembly),
3.RegisterAssemblyByConvention(Assembly assembly, ConventionalRegistrationConfig config)
以上 三个方法需要特别注意:
第一个方法,AddConventionalRegistrar是向IocManager的一个私有泛型集合List<IConventionalDependencyRegistrar>注册注册机制,这句话不太好明白,简单说就是设定依赖注入模块的注入方式,
通常所有的Module类的预初始化方法中调用以决定哪些类型需要被注册(如果没有就无需调用),
比如在Abp程序集中的BasicConventionalRegistrar实现的就是搜索并注册指定的程序集中的所有实现了ITransientDependency,ISingletonDependency和IInterceptor的类并注册到依赖容器中,
第二,第三个方法执行真正的注册逻辑,
通常在一个个具体的Module的初始化方法中调用,传入当前Module所属的程序集,
迭代List<IConventionalDependencyRegistrar>将当前程序集作为参数执行注册,
第二,第三个方法的区别在于第三个方法多了一个ConventionalRegistrationConfig参数,以决定是否还需要搜索当前程序及中的IWindsorInstaller的实现类进行注册,默认是需要的。
IAbpModuleManager主要用于管理所有的模块默认也就是一个个的程序集(一个模块对应一个程序集),主要用于搜索到所有的Module以及他们的依赖Module,首先执行所有Module的PreInitialize方法再执行所有的Initialize,最后执行所有的PostInitialize,执行IAbpModuleManager的ShutdownModules时顺序颠倒依次执行所有具体Module的ShutDown方法。
- ABP 框架从源码学习——abp框架启动核心类AbpBootstrapper(2)
- ABP 框架从源码学习——abp框架启动和结束(1)
- ABP入门系列目录——学习Abp框架之实操演练(推荐)
- ABP框架学习之——AutoMapper。
- ABP框架学习之——授权(Authorization)
- NFine-ABP框架学习
- [置顶]ABP入门系列目录——学习Abp框架之实操演练
- ABP框架心得系列-1.本土化和ABP核心
- ABP框架学习之——数据校验
- ABP框架运行注意事项
- ABP框架----------建导航
- ABP学习笔记之搭建APB框架
- 为什么要使用ABP框架?
- abp及实战框架概述
- abp及实战框架概述
- abp及实战框架概述
- abp及实战框架概述
- abp及实战框架概述
- leetcode-7. Reverse Integer
- 函数传参指针和引用的差别
- FastReport编写事件代码控制控件显示隐藏
- 红黑树C++实现以及与AVL树的区别
- Windows 64 位系统下安装配置 DOSBox 及 debug.exe
- ABP 框架从源码学习——abp框架启动核心类AbpBootstrapper(2)
- linux的常用命令
- PHP-Zend引擎剖析之Hello World(二)
- array_filter、array_walk、array_map的区别
- 磁盘的基本概念介绍
- 服务器端编程心得(六)—— 关于网络编程的一些实用技巧和细节
- Visio studio 基本控件
- Python简易爬虫架构与设计
- linux 下删除文件的 操纵