ABP框架学习记录(5)- Setting解析
ABP中的 Setting
和 Configuration
:
Setting一般用于需要通过外部配置文件(或数据库)设置的简单类型数据(一般就是字符串)。
Configuration一般只需要通过内部代码完成的配置,一般用于设置复杂类型的数据。
Setting的实现
SettingDefinition
:用于定义Setting。
SettingDefinitionGroup
:用于给SettingDefinition
分组。
SettingsConfiguration
/ ISettingsConfiguration
:用于集中化设置和管理 SettingProvider
的对象。其封装了一个ITypeList<SettingProvider> Providers
的集合类。可以通过Configuration.Setting
来获取ISettingsConfiguration
实例,然后将自定义的 SettingProvider
添加到 SettingsConfiguration
对象中,下图:
SettingDefinitionManager
:主要完成注册到ABP中的 SettingDefinition
初始化,通过 ISettingsConfiguration
实例获取 setting providers
集合,然后在 Initialize
方法中通过 setting providers
获取 SettingDefinition
的数组。并将其保存在 Dictionary
中,其key就是 SettingDefinition
的Name,下图:
SettingDefinitionManager
继承 ISingletonDependency
接口,将在BasicConventionalRegistrar
类中实现约定规则的注入:
AbpKernelModule
中 PostInitialize
调用 SettingDefinitionManager
的 Initialize
方法:
SettingDefinitionProviderContext
:用于对 ISettingDefinitionManager
的封装:
SettingScopes
:标注了Flags特性的枚举类型,表示setting的应用范围:
SettingProvider
:为具体的功能模块所需的设置定义 SettingDefinition
,并且以数组的形式返回:
SettingManager
/ ISettingManager
:用户获取配置详情。
公共方法:
以mail的实现来使用Setting
目录结构:
IEmailSenderConfiguration
/EmailSenderConfiguration
和 ISmtpEmailSenderConfiguration
/SmtpEmailSenderConfiguration
:定义配置。
EmailSenderConfiguration
:
SmtpEmailSenderConfiguration
:
EmailSettingProvider
:继承自 SettingProvider
, 将SMTP的各项设置封装成SettingDefinition
,并以数组形式返回。
EmailSenderBase
/IEmailSender
和 ISmtpEmailSender
/SmtpEmailSender
:用户发送邮件。
参考: