ABP框架学习记录(4)- Configuration解析
目录结构:
通过 AbpStartupConfiguration
,Castle的依赖注入,Dictionary
对象和扩展方法实现了配置中心化。配置中心化是一个支持模块开发的框架必备功能。
核心模块配置
模块配置
ABP中核心功能模块中的一些功能的运行时的行为依赖于一些外部配置。比如 Localization
这个功能模块,最基本Abp需要知道要做哪些语言的本地化。而这些具体的配置对于Abp底层框架来说是不可预知的,那么ABP底层框架就很有必要提供一种手段供外部模块自定义 Congfiguration
。 这就是下文要分析的 IAbpStartupConfiguration
和各种I***Configuration
。
通过 AbpBootstrapper
的 Initialize
方法,注册 AbpCoreInstaller
:
具体请参考:ABP框架学习记录(2) - ABP初始化
AbpCoreInstaller
:
IAbpStartupConfiguration
/AbpStartupConfiguration
: Initialize
方法,通过调用容器,获取基础配置实例。
调用配置
抽象类 AbpModule
提供 Configuration
字段,继承 AbpModule
的子类,可以直接调用或修改某个组件的Configuration
。
AbpModule
:
调用/修改:
自定义模块配置
注册
以 IAbpWebCommonModuleConfiguration
为例:
定义 IAbpWebCommonModuleConfiguration
接口:
AbpWebCommonModule
中的 PreInitialize
方法注册实例:
获取
DictionaryBasedConfig
定义的 CustomSettings
就是最终保存自定义的module的Configuration的地方。
AbpStartupConfiguration
继承 DictionaryBasedConfig
:
IModuleConfigurations
中定义 IAbpStartupConfiguration
:
ModuleConfigurations
的实现:
AbpWebConfigurationExtensions
提供对 IModuleConfigurations
的扩展:
AbpStartupConfiguration
获取配置方法:
DictionaryBasedConfig
中定义的方法:
使用 AbpWebConfigurationExtensions
:
参考: