博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
springboot启动配置原理之二(运行run方法)
阅读量:5009 次
发布时间:2019-06-12

本文共 2831 字,大约阅读时间需要 9 分钟。

public ConfigurableApplicationContext run(String... args) {   StopWatch stopWatch = new StopWatch();   stopWatch.start();   ConfigurableApplicationContext context = null;   FailureAnalyzers analyzers = null;   configureHeadlessProperty();       //获取SpringApplicationRunListeners;从类路径下META-INF/spring.factories   SpringApplicationRunListeners listeners = getRunListeners(args);    //回调所有的获取SpringApplicationRunListener.starting()方法   listeners.starting();   try {       //封装命令行参数      ApplicationArguments applicationArguments = new DefaultApplicationArguments(            args);      //准备环境      ConfigurableEnvironment environment = prepareEnvironment(listeners,            applicationArguments);            //创建环境完成后回调SpringApplicationRunListener.environmentPrepared();表示环境准备完成             Banner printedBanner = printBanner(environment);              //创建ApplicationContext;决定创建web的ioc还是普通的ioc      context = createApplicationContext();       //异常报告      analyzers = new FailureAnalyzers(context);       //准备上下文环境;将environment保存到ioc中;而且applyInitializers();       //applyInitializers():回调之前保存的所有的ApplicationContextInitializer的initialize方法       //回调所有的SpringApplicationRunListener的contextPrepared();       //prepareContext运行完成以后回调所有的 SpringApplicationRunListener的contextLoaded();      prepareContext(context, environment, listeners, applicationArguments,            printedBanner);             //s刷新容器;ioc容器初始化(如果是web应用还会创建嵌入式的Tomcat);Spring注解版       //扫描,创建,加载所有组件的地方;(配置类,组件,自动配置)      refreshContext(context);       //从ioc容器中获取所有的ApplicationRunner和CommandLineRunner进行回调       //ApplicationRunner先回调,CommandLineRunner再回调      afterRefresh(context, applicationArguments);        //所有的SpringApplicationRunListener回调finished方法      listeners.finished(context, null);      stopWatch.stop();      if (this.logStartupInfo) {         new StartupInfoLogger(this.mainApplicationClass)               .logStarted(getApplicationLog(), stopWatch);      }       //整个SpringBoot应用启动完成以后返回启动的ioc容器;      return context;   }   catch (Throwable ex) {      handleRunFailure(context, listeners, analyzers, ex);      throw new IllegalStateException(ex);   }}

//获取SpringApplicationRunListeners;从类路径下META-INF/spring.factories

//回调所有的获取SpringApplicationRunListener.starting()方法

 //准备环境

//创建环境完成后回调SpringApplicationRunListener.environmentPrepared();表示环境准备完成

 //创建ApplicationContext;决定创建web的ioc还是普通的ioc

//准备上下文环境;将environment保存到ioc中;而且applyInitializers();

//applyInitializers():回调之前保存的所有的ApplicationContextInitializer的initialize方法
//回调所有的SpringApplicationRunListener的contextPrepared();
//prepareContext运行完成以后回调所有的 SpringApplicationRunListener的contextLoaded();

 
 

//从ioc容器中获取所有的ApplicationRunner和CommandLineRunner进行回调

//ApplicationRunner先回调,CommandLineRunner再回调

 
 //所有的SpringApplicationRunListener回调finished方法

转载于:https://www.cnblogs.com/MagicAsa/p/10745447.html

你可能感兴趣的文章
1.线程生命周期
查看>>
border_mode
查看>>
printf中的short int, int, long int和long long int
查看>>
sqlHelper做增删改查,SQL注入处理,存储值,cookie,session
查看>>
[Project Euler]Problem 29
查看>>
oracle 批量删除触发器
查看>>
在windows server 2003 IIS6下安装PHP 5.3x
查看>>
解决 Electron 5.0 版本出现 require is not defined 的问题
查看>>
Java集合的Stack、Queue、Map的遍历
查看>>
C#中的特性(Attributes)
查看>>
列表、元组、字典、集合的定义、操作与综合练习
查看>>
设计模式六大原则(5):迪米特法则
查看>>
iOS中使用nil NULL NSNULL的区别
查看>>
操作系统实验3:内存分配与回收
查看>>
Paul Graham:梦寐以求的编程语言
查看>>
C#开发中使用配置文件对象简化配置的本地保存
查看>>
工厂模式
查看>>
Shiro学习
查看>>
9、第九节课jquery选择器jq2,20151007
查看>>
java.lang.NoSuchMethodException
查看>>