ABP官方文档翻译 1.4 启动配置
启动配置
ABP提供了基础设施和模型在启动的时候对它及模块进行配置。
配置ABP
在模块的PreInitialize事件中配置ABP。示例配置如下:
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是设计为模块化的。不同的模块可以配置ABP。例如,不同的模块可以添加导航提供者在主菜单上添加自己的菜单。(参见localization和navigation了解更多详情)。
替换内建服务
Configuration.ReplaceService方法可以用来覆写内建服务。例如,可以使用自定义实现来替换IabpSession服务,如下:
Configuration.ReplaceService<IAbpSession, MySession>(DependencyLifeStyle.Transient);
ReplaceService方法有个传递action参数的重载方法可以用来自定义覆盖(可以直接使用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(因此,它是可以注入的)的PreInitialize事件中注册这个类到依赖注入:
IocManager.Register<MyModuleConfig>();
在本例中应该注入为单例的。现在,可以使用下面的代码在模块的PreInitialize方法中配置MyModule:
Configuration.Get<MyModuleConfig>().SampleConfig1 = false;
虽然可以使用如下所示的IAbpStartupConfiguration.Get方法,我们可以创建一个ImoduleConfiguratjions的扩展方法,如下:
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需要这种配置。可以注入MyModuleConfiguration并且使用配置值。示例如下:
public class MyService : ITransientDependency
{
private readonly MyModuleConfig _configuration; public MyService(MyModuleConfig configuration)
{
_configuration = configuration;
} public void DoIt()
{
if (_configuration.SampleConfig2 == "test")
{
//...
}
}
}
因此,模块可以在ABP系统中创建中心配置点。
ABP官方文档翻译 1.4 启动配置的更多相关文章
- 0.0 ABP官方文档翻译目录
一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...
- ABP官方文档翻译 6.2.1 ASP.NET Core集成
ASP.NET Core 介绍 迁移到ASP.NET Core? 启动模板 配置 启动类 模块配置 控制器 应用服务作为控制器 过滤器 授权过滤器 审计Action过滤器 校验过滤器 工作单元Acti ...
- ABP官方文档翻译 6.1.1 MVC控制器
ASP.NET MVC控制器 介绍 AbpController基类 本地化 其他 过滤器 异常处理和结果包装 审计日志 验证 授权 工作单元 介绍 ABP通过Abp.Web.Mvc nuget包集成到 ...
- ABP官方文档翻译 5.1 Web API控制器
ASP.NET Web API控制器 介绍 AbpApiController基类 本地化 其他 过滤器 审计日志 授权 反伪造过滤器 工作单元 结果包装和异常处理 结果缓存 校验 模型绑定器 介绍 A ...
- ABP官方文档翻译 3.6 工作单元
工作单元 介绍 ABP中的连接和事务管理 传统的工作单元方法 控制工作单元 UnitOfWork特性 IUnitOfWorkManager 工作单元详情 禁用工作单元 无事务工作单元 一个工作单元方法 ...
- ABP官方文档翻译 0.0 ABP官方文档翻译目录
一直想学习ABP,但囿于工作比较忙,没有合适的契机,当然最重要的还是自己懒.不知不觉从毕业到参加工作七年了,没留下点儿什么,总感觉很遗憾,所以今天终于卯足劲鼓起勇气开始写博客.有些事能做的很好,但要跟 ...
- ABP官方文档翻译 1.3 模块系统
ABP模块系统 介绍 模块定义 生命周期方法 PreInitialize Initialize PostInitialize Shutdown 模块依赖 插件系统 ASP.NET Core ASP.N ...
- ABP官方文档翻译 7.2 Hangfire集成
Hangfire集成 介绍 ASP.NET Core集成 ASP.NET MVC 5.x集成 面板授权 介绍 Hangfire是一个综合的后台job管理器.你可以 把它集成到ABP,用来取代默认的后台 ...
- ABP官方文档翻译 5.3 OData集成
OData集成 介绍 安装 安装Nuget包 设置模块依赖 配置实体 创建控制器 配置 示例 获取实体列表 Request Response 获取单个实体 Request Response 使用导航属 ...
随机推荐
- Centos查看系统位数方法
方法一:file /sbin/init 方法二:file /bin/ls 我的显示是32位
- Java知识点梳理——集合
1.定义:Java集合类存放于java.util包,是存放对象的容器,长度可变,只能存放对象,可以存放不同的数据类型: 2.常用集合接口: a.Collection接口:最基本的集合接口,存储不唯一, ...
- 用Java向数据库中插入大量数据时的优化
使用jdbc向数据库插入100000条记录,分别使用statement,PreparedStatement,及PreparedStatement+批处理3种方式进行测试: public void ex ...
- 用MCI处置WAV视频时,怎样才能让视频在当前窗口播放
用MCI处理WAV视频时,怎样才能让视频在当前窗口播放MCI播放视频默认是新开一个窗口播放,播放完毕返回原来的窗口,想着原来窗口播放如何做? mciSendCommand或mciSendString怎 ...
- spring基础---->spring自定义标签(一)
Spring具有一个基于架构的扩展机制,可以使用xml文件定义和配置bean.本博客将介绍如何编写自定义XML bean的解析器,并用实例来加以说明.其实我一直相信 等你出现的时候我就知道是你. Sp ...
- Fragment,仿QQ空间
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9023451 在今天的这篇文章当中,我依然会以实战加理论结合 ...
- 170323、Spring 事物机制总结
spring两种事物处理机制,一是声明式事物,二是编程式事物 声明式事物 1)Spring的声明式事务管理在底层是建立在AOP的基础之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加 ...
- 170316、spring4:@Cacheable和@CacheEvict实现缓存及集成redis
注:1.放入cache中,采用@Cacheable;使缓存失效@CacheEvict 2.自定义CacheManager只需要继承org.springframework.cache.support.A ...
- QA规范
规范流程: 1)拿到需求,分析需求,先写一版checklist: 2)进行codediff,过程中最好一行行代码review,尽早发现代码错误或代码逻辑不完善的地方,codediff之后修改check ...
- poj1015 Jury Compromise【背包】
Jury Compromise Time Limit: 1000MS Memory Limit: 65536K Total Submissions:32355 Accepted:8722 ...