目录 启动流程分析 创建 SpringApplication 启动 run(String... args)
启动流程分析
SpringApplication . run ( App . class , args) ; return new SpringApplication ( primarySources) . run ( args) ;
创建 SpringApplication
SpringApplication ( primarySources) : this . primarySources = new LinkedHashSet < > ( Arrays . asList ( primarySources) ) ;
this . webApplicationType = WebApplicationType . deduceFromClasspath ( ) ;
this . bootstrapRegistryInitializers = new ArrayList < > ( getSpringFactoriesInstances ( BootstrapRegistryInitializer . class ) ) ;
this . initializers = getSpringFactoriesInstances ( ApplicationContextInitializer . class ) ;
this . listeners = getSpringFactoriesInstances ( ApplicationListener . class ) ) ;
this . mainApplicationClass = deduceMainApplicationClass ( ) ;
启动 run(String… args)
SpringApplicationRunListeners listeners = getSpringFactoriesInstances ( SpringApplicationRunListener . class , types, this , args) . forEach ( listener. starting ( bootstrapContext) )
ApplicationArguments applicationArguments = new DefaultApplicationArguments ( args) ;
ConfigurableEnvironment environment = prepareEnvironment ( listeners, bootstrapContext, applicationArguments) ;
configureIgnoreBeanInfo ( environment) ;
Banner printedBanner = printBanner ( environment) ;
context = createApplicationContext ( ) ;
context. applicationStartup = applicationStartup;
prepareContext ( bootstrapContext, context, environment, listeners, applicationArguments, printedBanner) ;
refreshContext ( context) ;
afterRefresh ( context, applicationArguments) ;
listeners. started ( context, timeTakenToStartup) ;
callRunners ( context, applicationArguments) ;
listeners. ready ( context, timeTakenToReady) ;