• Furion框架亮点之-灵活的Startup类


    Furion框架亮点之-灵活的Startup类

    在 Furion 框架中,提供了更为灵活的 Startup 类配置方式,无需在 Web 启用层 中配置,可将配置放到任何项目层。

    什么是Startup类

    Startup 类是 ASP.NET Core 应用程序启动默认调用的类

    Startup类中的方法

    • ConfigureServices:配置应用所需服务,在该方法中可以添加应用所需要的功能或服务
    • Configure:配置应用请求处理管道

    Furion中的AppStartup

    传统的Startup类有一些问题:

    • Startup 类默认和 Web 应用层 绑定在一起,这样就会导致如果我创建了新的 Web 应用层,Startup 又要重新配置
    • 随着业务的增长,需要集成越来越多的第三方服务,这时候 Startup 类就会变得越来越臃肿,难以维护
    • Startup 类无法与其他项目类型进行共用

    AppStartup 是一个抽象的空类,没有任何定义成员。正是因为这样,才提供更加灵活的配置方式。
    AppStartup 派生类只有两个小约定:

    • 任何公开、非静态、返回值为 void 且方法第一个参数是 IServiceCollection 类型,那么他就是一个 ConfigureServices 方法
    • 任何公开、非静态、返回值为 void 且方法第一个参数是 IApplicationBuilder 类型,第二个参数是 IWebHostEnvironment 类型,那么他就是一个 Configure 方法
    using Microsoft.Extensions.DependencyInjection;
    
    namespace Furion.EntityFramework.Core
    {
        public class MyStartup : AppStartup
        {
            public void ConfigureServices(IServiceCollection services)
            {
                services.AddDataValidation();
            }
    
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                app.UseSwagger();
            }
    
            // 可以随意定义名字和方法
            public void XXXXName(IServiceCollection services)
            {
            }
    
            // 可以随意定义名字和方法
            public void ZZZName(IApplicationBuilder app, IWebHostEnvironment env)
            {
            }
        }
    }
    

    AppStartup使用细节

    默认情况下,AppStartup 配置顺序由所在程序集的名称进行正序调用,如果我们需要配置执行顺序,只需要在 AppStartup 派生类中贴 [AppStartup(order)] 特性即可。

     [AppStartup(10)]
        public class FirstStartup : AppStartup
        {
            public void ConfigureServices(IServiceCollection services)
            {
            }
    
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
            }
        }
    

    AppStartup 方法调用顺序和方法的书写先后有关,越在前面的方法越先调用。

    最后

    由于小僧文档写得太好了,感觉再借鉴来写文没有营养,此系列终结。

  • 相关阅读:
    jhat:虚拟机堆转储快照分析工具
    jmap:java内存影像工具
    jinfo:Java配置信息工具
    jstat:虚拟机统计信息监视工具
    jps:虚拟机进程状况工具
    jdk工具总领
    到底是"/"还是"/*"
    jdk_keytool
    html地图定位
    java 手机号码归属地查询
  • 原文地址:https://www.cnblogs.com/muphalem/p/14315388.html
Copyright © 2020-2023  润新知