ABP提供了在啓動時配置模塊的基礎設施和模型。app
配置ABP是在模塊的PreInitialize方法中完成的,例如:框架
ABP是基於模塊設計的。不一樣的模塊均可以配置ABP。例如:不一樣的模塊能夠添加導航提供者(navigation providers)往主菜單添加自定義子菜單。ide
Configuration.ReplaceService()方法能夠覆蓋內置服務。例如,你能夠用定義實現的類替換IAbpSession服務:函數
ReplaceService()方法經過重載操做以定義方式實現替換(也能夠直接使用Castle Windsor高級的註冊API)。ui
同一個服務能夠屢次被替換,尤爲是在不一樣的模塊間。生效的服務是最後被替換的那個。PreInitialize()方法按依賴順序執行。this
除了ABP框架自身的啓動配置外,模塊也能夠經過擴展IAbpModuleConfigurations接口,爲模塊提供配置點。spa
在上述代碼中,配置AbpWebCommon模塊把全部異常發送給客戶端。設計
不是每一個模塊都應該定義相似這種類型的配置,一般狀況是在不一樣的應用程序中須要重複使用的才定義,而且要在啓動時進行配置。code
假設咱們有一個叫MyModule的模塊,它帶有一些配置屬性。首先,爲這些配置屬性建立一個類:對象
而後在PreInitialize方法中經過DI(Dependency Injection)註冊這個類(所以,MyModuleConfig是可註冊的類):
像本事例那樣註冊爲單例對象。那麼,咱們可使用以下代碼在PreInitialize方法中配置MyModule模塊:
然而咱們能夠相似以下代碼,經過建立IModuleConfigurations擴展方法,使用IAbpStartupConfiguration.Get()方法得到引用:
那麼,其它模塊能夠經過擴展方法配置MyModule模塊:
這使得查詢模塊配置和收集它們變得容易(Configuration.Modules...)。ABP自己爲它本身的模塊配置定義了擴展方法。
在某些地方,MyModule模塊須要這些配置,你能夠經過構造函數注入並使用配置值。以下:
這樣,在ABP系統中,模塊能夠建立集中配置的點。