栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot 2.x源码系列【8】启动流程深入解析之最后阶段

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot 2.x源码系列【8】启动流程深入解析之最后阶段

有道无术,术尚可求,有术无道,止于术。

本系列Spring Boot版本2.7.0

文章目录
    • 前言
    • 1. 打印启动完成日志
    • 2. 调用Runner
    • 总结

前言

终于启动流程到了最后一个阶段,这里主要是打印启动完成日志、调用监听器、运行Runners 。

			// 1. 方法体为空,需自定义实现
            this.afterRefresh(context, applicationArguments);
            // 2. 启动耗时
            Duration timeTakenToStartup = Duration.ofNanos(System.nanoTime() - startTime);
            // 3. 打印启动耗时
            if (this.logStartupInfo) {
                (new StartupInfoLogger(this.mainApplicationClass)).logStarted(this.getApplicationLog(), timeTakenToStartup);
            }
			// 4. 执行监听器,应用已启动事件
            listeners.started(context, timeTakenToStartup);
            // 5. 调用启动完成运行器
            this.callRunners(context, applicationArguments);
    protected void afterRefresh(ConfigurableApplicationContext context, ApplicationArguments args) {
    }

1. 打印启动完成日志

打印启动完成耗时:

2. 调用Runner

启动完成后,调用ApplicationRunner、CommandLineRunner运行用户自定义的启动完成后的执行代码

    private void callRunners(ApplicationContext context, ApplicationArguments args) {
        List runners = new ArrayList();
        runners.addAll(context.getBeansOfType(ApplicationRunner.class).values());
        runners.addAll(context.getBeansOfType(CommandLineRunner.class).values());
        AnnotationAwareOrderComparator.sort(runners);
        Iterator var4 = (new LinkedHashSet(runners)).iterator();

        while(var4.hasNext()) {
            Object runner = var4.next();
            if (runner instanceof ApplicationRunner) {
                this.callRunner((ApplicationRunner)runner, args);
            }

            if (runner instanceof CommandLineRunner) {
                this.callRunner((CommandLineRunner)runner, args);
            }
        }

    }
 
总结 

Spring Boot 2.x源码系列【1】SPI机制详解
Spring Boot 2.x源码系列【2】启动流程深入解析之SpringApplication类
Spring Boot 2.x源码系列【3】启动流程深入解析之创建引导上下文
Spring Boot 2.x源码系列【4】启动流程深入解析之启动监听器
Spring Boot 2.x源码系列【5】启动流程深入解析之准备环境
Spring Boot 2.x源码系列【6】启动流程深入解析之创建、准备上下文
Spring Boot 2.x源码系列【7】启动流程深入解析之刷新上下文

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号