启动配置

  ABP提供了基础设施和模型在启动的时候对它及模块进行配置。

配置ABP

  在模块的PreInitialize事件中配置ABP。示例配置如下:

  1. public class SimpleTaskSystemModule : AbpModule
  2. {
  3. public override void PreInitialize()
  4. {
  5. //Add languages for your application
  6. Configuration.Localization.Languages.Add(new LanguageInfo("en", "English", "famfamfam-flag-england", true));
  7. Configuration.Localization.Languages.Add(new LanguageInfo("tr", "Türkçe", "famfamfam-flag-tr"));
  8.  
  9. //Add a localization source
  10. Configuration.Localization.Sources.Add(
  11. new XmlLocalizationSource(
  12. "SimpleTaskSystem",
  13. HttpContext.Current.Server.MapPath("~/Localization/SimpleTaskSystem")
  14. )
  15. );
  16.  
  17. //Configure navigation/menu
  18. Configuration.Navigation.Providers.Add<SimpleTaskSystemNavigationProvider>();
  19. }
  20.  
  21. public override void Initialize()
  22. {
  23. IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
  24. }
  25. }

  ABP是设计为模块化的。不同的模块可以配置ABP。例如,不同的模块可以添加导航提供者在主菜单上添加自己的菜单。(参见localization和navigation了解更多详情)。

替换内建服务

  Configuration.ReplaceService方法可以用来覆写内建服务。例如,可以使用自定义实现来替换IabpSession服务,如下:

  1. Configuration.ReplaceService<IAbpSession, MySession>(DependencyLifeStyle.Transient);

  ReplaceService方法有个传递action参数的重载方法可以用来自定义覆盖(可以直接使用Castle Windsor来使用高级注册API)。

同样的服务可以被覆盖多次(尤其是在不同的模块中)。最后的覆盖是有效的(如你所知,模块的Preinitialize方法按照依赖顺序执行)。

配置模块

  除了框架自己的启动配置外,模块可以继承IabpModuleConfigurations接口提供配置点。例如:

  1. ...
  2. using Abp.Web.Configuration;
  3. ...
  4. public override void PreInitialize()
  5. {
  6. Configuration.Modules.AbpWebCommon().SendAllExceptionsToClients = true;
  7. }
  8. ...

  在本例中,配置AbpWebCommon模块将所有的异常发送给客户端。

  不是每个模块都需要定义这种类型的配置。通常需要在不同应用程序中复用并且需要在启动时配置的时候才需要。

创建模块配置

  1.   假定我们有一个名为MyModule的模块,它有一些配置属性。首先,我们创建一个包含这些配置属性的类:
  1. public class MyModuleConfig
  2. {
  3. public bool SampleConfig1 { get; set; }
  4.  
  5. public string SampleConfig2 { get; set; }
  6. }
  1.   然后我们在MyModule(因此,它是可以注入的)的PreInitialize事件中注册这个类到依赖注入:
  1. IocManager.Register<MyModuleConfig>();

  在本例中应该注入为单例的。现在,可以使用下面的代码在模块的PreInitialize方法中配置MyModule:

  1. Configuration.Get<MyModuleConfig>().SampleConfig1 = false;

  虽然可以使用如下所示的IAbpStartupConfiguration.Get方法,我们可以创建一个ImoduleConfiguratjions的扩展方法,如下:

  1. public static class MyModuleConfigurationExtensions
  2. {
  3. public static MyModuleConfig MyModule(this IModuleConfigurations moduleConfigurations)
  4. {
  5. return moduleConfigurations.AbpConfiguration.Get<MyModuleConfig>();
  6. }
  7. }

  现在,其他的模块可以使用扩展方法来配置这个模块了:

  1. Configuration.Modules.MyModule().SampleConfig1 = false;
  2. Configuration.Modules.MyModule().SampleConfig2 = "test";

  这使得在单一的地方(Configuration.Modules)查看模块配置变得容易。ABP本身为自己的模块配置定义了扩展方法。

  在一些情况下,MyModule需要这种配置。可以注入MyModuleConfiguration并且使用配置值。示例如下:

  1. public class MyService : ITransientDependency
  2. {
  3. private readonly MyModuleConfig _configuration;
  4.  
  5. public MyService(MyModuleConfig configuration)
  6. {
  7. _configuration = configuration;
  8. }
  9.  
  10. public void DoIt()
  11. {
  12. if (_configuration.SampleConfig2 == "test")
  13. {
  14. //...
  15. }
  16. }
  17. }

  因此,模块可以在ABP系统中创建中心配置点。

返回主目录

ABP官方文档翻译 1.4 启动配置的更多相关文章

  1. 0.0 ABP官方文档翻译目录

    一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...

  2. ABP官方文档翻译 6.2.1 ASP.NET Core集成

    ASP.NET Core 介绍 迁移到ASP.NET Core? 启动模板 配置 启动类 模块配置 控制器 应用服务作为控制器 过滤器 授权过滤器 审计Action过滤器 校验过滤器 工作单元Acti ...

  3. ABP官方文档翻译 6.1.1 MVC控制器

    ASP.NET MVC控制器 介绍 AbpController基类 本地化 其他 过滤器 异常处理和结果包装 审计日志 验证 授权 工作单元 介绍 ABP通过Abp.Web.Mvc nuget包集成到 ...

  4. ABP官方文档翻译 5.1 Web API控制器

    ASP.NET Web API控制器 介绍 AbpApiController基类 本地化 其他 过滤器 审计日志 授权 反伪造过滤器 工作单元 结果包装和异常处理 结果缓存 校验 模型绑定器 介绍 A ...

  5. ABP官方文档翻译 3.6 工作单元

    工作单元 介绍 ABP中的连接和事务管理 传统的工作单元方法 控制工作单元 UnitOfWork特性 IUnitOfWorkManager 工作单元详情 禁用工作单元 无事务工作单元 一个工作单元方法 ...

  6. ABP官方文档翻译 0.0 ABP官方文档翻译目录

    一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...

  7. ABP官方文档翻译 1.3 模块系统

    ABP模块系统 介绍 模块定义 生命周期方法 PreInitialize Initialize PostInitialize Shutdown 模块依赖 插件系统 ASP.NET Core ASP.N ...

  8. ABP官方文档翻译 7.2 Hangfire集成

    Hangfire集成 介绍 ASP.NET Core集成 ASP.NET MVC 5.x集成 面板授权 介绍 Hangfire是一个综合的后台job管理器.你可以 把它集成到ABP,用来取代默认的后台 ...

  9. ABP官方文档翻译 5.3 OData集成

    OData集成 介绍 安装 安装Nuget包 设置模块依赖 配置实体 创建控制器 配置 示例 获取实体列表 Request Response 获取单个实体 Request Response 使用导航属 ...

随机推荐

  1. Linux命令之乐--cat

    cat命令的用途是连接文件或标准输入并打印.这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用. 命令参数: -A, --show-all  ...

  2. 模拟http请求 带 chunked解析办法一

    今天在干坏事抓取别人页面时候遇到一个问题,平时我们在post数据后,大不了要求提交cookie,但是今天这个测试了N遍不需要coookie都行的,但是抓取到的始终是乱码,怎么解析都不行.于是自己又把c ...

  3. Android StaggeredGrid 加下拉刷新功能 PullToRefresh

    https://github.com/etsy/AndroidStaggeredGrid  用的github上面提供瀑布流,继承于abslistview,回收机制不错,并且提供了OnScrollLis ...

  4. 云服务器 ECS Linux 保存用户登录操作命令记录

    转载自 : https://help.aliyun.com/knowledge_detail/41210.html 云服务器 ECS Linux 如果要保存用户登录操作记录,则可以通过在 /etc/p ...

  5. [Android Tips] 29. 如何判断当前编译的是哪个 Flavor ?

    背景说明 应用需要针对不同的市场集成不同的第三方 SDK ,比如:面向海市场的版本需要集成 google-service apply plugin: 'com.google.gms.google-se ...

  6. aliyun ECS da shang chuang 安装小结

    1. 服务器系统选centos 6.x  选错了可以在管理界面重装系统 阿里云自带ip限制功能,默认是关闭外网访问(ftp http)进来的,需要手动在管理界面 - 本实例安全组 - 配置. 先安装v ...

  7. NFS服务基础

    NFS服务部署: (一)NFS环境准备: 操作系统 角色 IP地址 CentOS Linux release 7.3.1611 (Core) NFS服务端 192.168.152.138 CentOS ...

  8. MapReduce的核心编程思想

    1.MapReduce的核心编程思想 2.yarn集群工作机制 3.maptask并行度与决定机制 4.maptask工作机制 5.MapReduce整体流程 6.shuffle机制 7.yarn架构

  9. Python数据分析(一):工具的简单使用

    1.Numpy 安装:pip install numpy [root@kvm work]# cat numpy_test.py #!/usr/bin/env python #coding:utf-8 ...

  10. python模块之PIL模块(生成随机验证码图片)

    PIL简介 什么是PIL PIL:是Python Image Library的缩写,图像处理的模块.主要的类包括Image,ImageFont,ImageDraw,ImageFilter PIL的导入 ...