SpringBoot原理——启动流程

在这里插入图片描述

每个SpringBoot程序都有一个主入口,也就是main方法,main里面调用SpringApplication.run()启动。

	public ConfigurableApplicationContext run(String... args) {
   	StopWatch stopWatch = new StopWatch();
   	stopWatch.start();
   	ConfigurableApplicationContext context = null;
   	FailureAnalyzers analyzers = null;
   	configureHeadlessProperty();
   	SpringApplicationRunListeners listeners = getRunListeners(args);
   	listeners.starting();
   	try {
   		ApplicationArguments applicationArguments = new DefaultApplicationArguments(
   				args);
   		ConfigurableEnvironment environment = prepareEnvironment(listeners,
   				applicationArguments);
   		Banner printedBanner = printBanner(environment);
   		context = createApplicationContext();
   		analyzers = new FailureAnalyzers(context);
   		prepareContext(context, environment, listeners, applicationArguments,
   				printedBanner);
   		refreshContext(context);
   		afterRefresh(context, applicationArguments);
   		listeners.finished(context, null);
   		stopWatch.stop();
   		if (this.logStartupInfo) {
   			new StartupInfoLogger(this.mainApplicationClass)
   					.logStarted(getApplicationLog(), stopWatch);
   		}
   		return context;
   	}
   	catch (Throwable ex) {
   		handleRunFailure(context, listeners, analyzers, ex);
   		throw new IllegalStateException(ex);
   	}
   }

猜你喜欢

转载自blog.csdn.net/define_us/article/details/84784112