ABP之启动配置
ASP.NET Boilerplate提供了在StartUp中配置其模块的基础设施和模型。
配置ASP.NET Boilerplate
配置ABP是在模块的PreInitialize 方法中做的,如下所示:
- public class SimpleTaskSystemModule : AbpModule
- {
- public override void PreInitialize()
- {
- //Add languages for your application
- Configuration.Localization.Languages.Add(new LanguageInfo("en", "English", "famfamfam-flag-england", true));
- Configuration.Localization.Languages.Add(new LanguageInfo("tr", "Türkçe", "famfamfam-flag-tr"));
- //Add a localization source
- Configuration.Localization.Sources.Add(
- new XmlLocalizationSource(
- "SimpleTaskSystem",
- HttpContext.Current.Server.MapPath("~/Localization/SimpleTaskSystem")
- )
- );
- //Configure navigation/menu
- Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
- }
- public override void Initialize()
- {
- IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
- }
- }
ABP的设计考虑到了模块化,可以配置不同的模块。比如模块可以添加导航提供者在主菜单中添加自己的菜单项(有关配置它们的详细信息,请参阅本地化和导航文档)。
取代内置服务
Configuration.ReplaceService方法可用于重写内置服务,例如,我们可以用自定义实现替换IAbpSession服务,如下所示:
- Configuration.ReplaceService<IAbpSession, MySession>(DependencyLifeStyle.Transient);
ReplaceService方法有一个重载,通过一个动作以定制的方式进行替换(我们可以直接使用Castle Windsor及其高级注册API)。
相同的服务可以被多次替换,特别是在不同的模块中。最后一个替换的是有效的那个。按照依赖顺序执行模块PreInitialize方法。
配置模块
除了框架自己的启动配置之外,模块还可以扩展IAbpModuleConfigurations接口,为模块提供配置点。例如:
- ...
- using Abp.Web.Configuration;
- ...
- public override void PreInitialize()
- {
- Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = true;
- }
- ...
在上面的例子中,我们配置了AbpWebCommon模块,将所有异常发送给客户端。
不是每个模块都应该定义这种类型的配置。当模块在不同的应用程序中需要重用时通常会启动时配置。
为模块创建配置
假设我们有一个名为MyModule的模块,它有一些配置属性。首先,我们为这些可配置属性创建一个类:
- public class MyModuleConfig
- {
- public bool SampleConfig1 { get; set; }
- public string SampleConfig2 { get; set; }
- }
然后,我们通过抵赖注入将这个类注册到MyModule的预初始化方法中(因此,它将是可注入的):
- IocManager.Register<MyModuleConfig>();
它应该像本例中那样注册为单例。我们现在可以使用以下代码在模块的PreInitialize方法中配置MyModule:
- Configuration.Get<MyModuleConfig>().SampleConfig1 = false;
这样我们可以使用IAbpStartupConfiguration.Get方法,可以创建IModuleConfigurations 扩展方法,如下所示:
- public static class MyModuleConfigurationExtensions
- {
- public static MyModuleConfig MyModule(this IModuleConfigurations moduleConfigurations)
- {
- return moduleConfigurations.AbpConfiguration.Get<MyModuleConfig>();
- }
- }
现在其他模块可以使用扩展方法来配置这个模块:
- Configuration.Modules.MyModule().SampleConfig1 = false;
- Configuration.Modules.MyModule().SampleConfig2 = "test";
这使得研究模块配置和在一个地方收集它们变得很容易(Configuration.Modules…)。ABP本身为自己的模块配置定义了扩展方法。
在某些时候,MyModule需要这种配置。我们可以注入MyModuleConfig并使用配置的值。例如
- public class MyService : ITransientDependency
- {
- private readonly MyModuleConfig _configuration;
- public MyService(MyModuleConfig configuration)
- {
- _configuration = configuration;
- }
- public void DoIt()
- {
- if (_configuration.SampleConfig2 == "test")
- {
- //...
- }
- }
- }
通过这种方式,模块可以在ASP.NET Boilerplate中创建中心配置点。。。
:
ABP之启动配置的更多相关文章
- ABP框架 - 启动配置
文档目录 本节内容: 配置ABP 替换内置服务 配置模块 为一个模块创建配置 ABP在启动时,提供基础框架和模型来配置和模块化. 置ABP 在预初始化事件中进行配置,示例: kid1412注:XmlL ...
- ABP(现代ASP.NET样板开发框架)系列之5、ABP启动配置
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之5.ABP启动配置 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- ABP理论学习之启动配置
返回总目录 本篇目录 配置ABP 配置模块 为模块创建配置 为了在应用启动时配置ABP和模块,ABP提供了一个基础设施. 配置ABP 配置ABP是在模块的PreInitialize事件中完成的.下面的 ...
- 基于DDD的.NET开发框架 - ABP启动配置
返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...
- ABP启动配置
ABP启动配置 返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行 ...
- 【ABP框架系列学习】启动配置(5)
ABP提供了在启动时配置模块的基础设施和模型. 1.配置ABP 配置ABP是在模块的PreInitialize方法中完成的,例如: public class SimpleTaskSystemModul ...
- ABP官方文档翻译 1.4 启动配置
启动配置 配置ABP 替换内置服务 配置模块 创建模块配置 ABP提供了基础设施和模型在启动的时候对它及模块进行配置. 配置ABP 在模块的PreInitialize事件中配置ABP.示例配置如下: ...
- [Abp 源码分析]一、Abp 框架启动流程分析
Abp 不一定仅用于 Asp.Net Core 项目,他也可以在 Console 与 WinFrom 项目当中进行使用,所以关于启动流程可以分为两种,一种是 Asp.Net Core 项目的启动流程, ...
- 【推荐】CentOS安装Tomcat-7.0.57+启动配置+安全配置+性能配置
注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在安装Tomcat之前,请确保已经安装了JDK-1.7环境,具体见<CentOS安装JDK-1.7>. ...
随机推荐
- 5个常常被大家忽略的Python小技巧
下面我挑选出的这几个技巧常常会被人们忽略,但它们在日常编程中能真正的给我们带来不少帮助. 1. 字典推导(Dictionary comprehensions)和集合推导(Set comprehensi ...
- PHP Iterator迭代对象属性
foreach用法和之前的数组遍历是一样的,只不过这里遍历的key是属性名,value是属性值.在类外部遍历时,只能遍历到public属性的,因为其它的都是受保护的,类外部不可见. class Har ...
- pandas 对数据帧DataFrame中数据的增删、补全及转换操作
1.创建数据帧 import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B'], [3, 'C', '5%']], index=['r ...
- PHP全栈学习笔记11
连接MySQL mysql_connect(servername,username,password); 面向对象: <?php $servername = "localhost&qu ...
- python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)
简介 上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试. 什么是接口测试 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统 ...
- 推荐系统(Recommendation system )介绍
前言 随着电子商务的发展,网络购物成为一种趋势,当你打开某个购物网站比如淘宝.京东的时候,会看到很多给你推荐的产品,你是否觉得这些推荐的产品都是你似曾相识或者正好需要的呢.这个就是现在电子商务里面的推 ...
- 《HelloGitHub》第 27 期
公告 网站新增了简单的搜索功能,可以通过项目名称或地址搜索.查看项目.欢迎star和推荐项目,我们一只在路上,希望志同道合者加入进来. 现招募专栏负责人: C# Java <HelloGitHu ...
- 原生js 遍历文件夹分析xml并保存
其实这种功能,网上相关的代码多的是,我也是因为今天正好要用到这个功能,所以临时写了下,放这里保存下,以便将来自己或者别人用的上吧. 当然我写的是一个hta文件.下面是完整js代码,都是调用active ...
- SpringBoot实用小技巧之动态设置SpringBoot日志级别
有时线上问题我们用打日志的方式来观察错误或埋点参数,但由于这些日志如果都打出来会占用大量存储空间而且覆盖了一些有效信息,所以线上级别一般设置INFO,调试级别用作特殊情况下.此时如果线上想查看调试级别 ...
- GoLang structTag说明
在处理json格式字符串的时候,经常会看到声明struct结构的时候,属性的右侧还有小米点括起来的内容.形如 type User struct { UserId int `json:"use ...