abp 模块系统
abp模块系统:ABP理论学习之模块系统
ABP提供了构建模块并将这些模块组合起来创建应用的基础设施。一个模块可以依赖另一个模块。一般来说,一个程序集可以认为是一个模块。一个模块是由一个派生了AbpModule的类定义的。
ABP按照依赖的顺序调用这些方法。如果模块A依赖于模块B,那么模块B在模块A之前初始化。方法执行的正确顺序是:PreInitialize-B, PreInitialize-A, Initialize-B, Initialize-A, PostInitialize-B and PostInitialize-A。这对于所有的依赖图都是成立的。
[DependsOn( typeof(AbpZeroCoreModule), typeof(AbpWebSignalRModule), typeof(AbpAutoMapperModule), //typeof(AbpHangfireModule), - ENABLE TO USE HANGFIRE INSTEAD OF DEFAULT JOB MANAGER typeof(AbpWebMvcModule), typeof(AbpZeroEntityFrameworkModule), typeof(AbpWebApiModule), typeof(EasymanCommonModule),//Easyman.Common typeof(EasymanCoreModule),//Easyman.Core typeof(EasymanApplicationModule),//Easyman.Application typeof(EasymanDataModule),//Easyman.EntityFramework typeof(EasymanViewMoudle),//Easyman.FwWeb typeof(EmProjectCommonModule),//Em.Project.Common typeof(EmProjectCoreModule),//Em.Project.Core typeof(EmProjectAppModule),//Em.Project.Application typeof(EmProjectDataModule),//Em.Project.EntityFramework typeof(EasymanWebApiModule)//Em.Project.WebApi )] public class EasymanWebModule : AbpModule{}
由于abp会根据设置模块依赖顺序加载初始化模块(DependsOn),
那也可以这样做:在一个项目中,非web的moudle中不设置依赖项,而是去web目录下按照模块加载顺序去配置依赖项(参考以上代码块)
但是,这不是abp推荐的依赖设置方式,应该遵循任意一个模块(程序集)单独拿出均可引入至其他项目(而不用担心未设置它的依赖项)