码迷,mamicode.com
首页 > 移动开发 > 详细

springboot启动逻辑分析(二)-------简述SpringApplication.run

时间:2019-10-14 01:32:36      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:col   creat   nfa   app   调用   cti   ring   lru   default   

调用链路为:

    at org.springframework.boot.SpringApplication.run(SpringApplication.java:296)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
    at com.ivy.demo.DemoApplication.main(DemoApplication.java:16)

代码:

public ConfigurableApplicationContext run(String... args) {
        StopWatch stopWatch = new StopWatch();
     //(1).记录开始时间 stopWatch.start(); ConfigurableApplicationContext context
= null; Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList<>(); configureHeadlessProperty();
     //(2).获取配置的所有的SpringApplicationRunListener实现类,并封装到SpringApplicationRunListeners类 SpringApplicationRunListeners listeners
= getRunListeners(args);
     //(3).调用listener列表starting方法 listeners.starting();
try { ApplicationArguments applicationArguments = new DefaultApplicationArguments( args);
       //(4).准备环境 ConfigurableEnvironment environment
= prepareEnvironment(listeners, applicationArguments);
       //(5).根据spring.beaninfo.ignore配置是否忽略属性 configureIgnoreBeanInfo(environment);
       //(6).打开欢迎字体 Banner printedBanner
= printBanner(environment);
       //(7).创建ApplicationContext context
= createApplicationContext();
       //(8).获取错误报告类 exceptionReporters
= getSpringFactoriesInstances( SpringBootExceptionReporter.class, new Class[] { ConfigurableApplicationContext.class }, context); prepareContext(context, environment, listeners, applicationArguments, printedBanner); refreshContext(context); afterRefresh(context, applicationArguments); stopWatch.stop(); if (this.logStartupInfo) { new StartupInfoLogger(this.mainApplicationClass) .logStarted(getApplicationLog(), stopWatch); } listeners.started(context); callRunners(context, applicationArguments); } catch (Throwable ex) { handleRunFailure(context, ex, exceptionReporters, listeners); throw new IllegalStateException(ex); } try { listeners.running(context); } catch (Throwable ex) { handleRunFailure(context, ex, exceptionReporters, null); throw new IllegalStateException(ex); } return context; }

 

springboot启动逻辑分析(二)-------简述SpringApplication.run

标签:col   creat   nfa   app   调用   cti   ring   lru   default   

原文地址:https://www.cnblogs.com/itivy/p/11669174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!