start方法中的源码publicvoidstart()throwsIllegalStateException{this.start("");}publicvoidstart(StringtaskName)throwsIllegalStateException{if(this.currentTaskName!=null){thrownewIllegalStateException("无法启动秒表:它已经在运行");}else{//保存一些信息到stopWatch对象this.currentTaskName=taskName;//当前任务的名称this.startTimeNanos=System.nanoTime();//当前时间}createBootstrapContext创建Bootstrap上下文privateDefaultBootstrapContextcreateBootstrapContext(){//创建一个默认的bootstrapcontext对象//以后会在里面保存很多信息DefaultBootstrapContextbootstrapContext=newDefaultBootstrapContext();//遍历之前得到的所有bootstrapper,调用每个bootstrapper的initialize()完成设置引导程序上下文环境的this.bootstrappers.forEach((initializer)->initializer.intitialize(bootstrapContext));returnbootstrapContext;//null}================================================================publicinterfaceBootstrapper{/***使用任何所需的注册初始化给定的{@linkBootstrapRegistry}。*@paramregistrytheregistrytoinitialize*///Incomingbootstrapregistrationfactory//在这个factory中,可以向他添加当前context的一些bootstrap环境信息voidinitialize(BootstrapRegistryregistry);}让当前应用进入headless模式privatevoidconfigureHeadlessProperty(){System.setProperty(SYSTEM_PROPERTY_JAVA_AWT_HEADLESS,System.getProperty(SYSTEM_PROPERTY_JAVA_AWT_HEADLESS,Bootstrap.toString(this.headless)));}获取所有RunListeners(运行中的监听器)所谓监听器就是监听当前项目的状态privateSpringApplicationRunListenersgetRunListeners(String[]args){Class>[]types=newClass>[]{SpringApplication.class,String[].class};//newSpringApplicationRunListeners:相当于将找到的Listener保存到SpringApplicationRunListener中;returnnewSpringApplicationRunListeners(logger,//getSpringFactoriesInstances:到spring.factories中找到SpringApplicationRunListenergetSpringFactoriesInstances(SpringApplicationRunListener.class,types,this,args),this.applicationStartup);}======================================================SpringApplicationRunListeners(Loglog,Collectionlisteners,ApplicationStartupapplicationStartup){this.log=log;this.listeners=newArrayList<>(listeners);this.applicationStartup=applicationStartup;}List
