Spring Boot 2.2.2启动深度剖析:run方法源码详解

5星 · 超过95%的资源 需积分: 18 2 下载量 87 浏览量 更新于2024-09-03 收藏 15KB MD 举报
本文档深入剖析了Spring Boot 2.2.2的启动过程,重点聚焦于`SpringApplication`类的`run`方法。首先,从`main`方法入手,当调用`SpringApplication.run`时,它会创建一个`ConfigurableApplicationContext`,这是Spring应用上下文的核心容器,用于管理应用程序的所有组件。 1. **启动Spring容器**: - `main`方法中的`SpringApplication.run`负责启动整个Spring框架,将传入的`SpringbootTest.class`作为配置类,并使用命令行参数`args`来配置应用的行为。 2. **计时监控**: - 在`run`方法内部,创建了一个`StopWatch`实例,用来记录应用程序的启动时间,这对于性能监控和调试非常有用。 3. **初始化应用上下文和异常报告**: - 初始化一个`ConfigurableApplicationContext`对象,它是应用的运行环境,同时创建一个`SpringBootExceptionReporter`集合,用于处理和报告运行时异常。 4. **设置系统属性**: - 方法`configureHeadlessProperty`用于设置`java.awt.headless`系统属性,这个属性通常与图形用户界面(GUI)的交互有关,非GUI环境中默认设为`true`。 5. **监听器和事件**: - 通过`getRunListeners(args)`获取所有的Spring运行监听器,并在应用启动前调用`starting()`方法,通知它们应用程序即将开始。 6. **应用参数处理**: - 创建`ApplicationArguments`对象,用于处理命令行参数和其他应用级别的参数,这些参数会被传递给`prepareEnvironment`方法。 7. **准备Spring环境**: - `prepareEnvironment`方法根据监听器和应用参数定制环境设置,包括bean定义、环境变量等,为Spring应用的初始化做准备。 8. **执行`run`方法主体**: - 最后,进入关键部分,尝试执行`run`方法主体,这将启动Spring容器,装配bean,加载配置,并最终引导应用程序执行流程。 通过这次源码分析,读者可以深入了解Spring Boot 2.2.2启动过程的每个步骤,这对于理解应用的生命周期管理和调试非常有帮助。对于开发者来说,掌握这些核心环节有助于优化代码、定位问题以及进行更深层次的定制化开发。

执行mvn clean install出现[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building springboot-schema 0.0.1-SNAPSHOT [INFO] ------------------------------------------------------------------------ Downloading: http://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-maven-plugin/2.2.2.RELEASE/spring-boot-maven-plugin-2.2.2.RELEASE.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 7.419 s [INFO] Finished at: 2023-07-22T19:52:51+08:00 [INFO] Final Memory: 9M/245M [INFO] ------------------------------------------------------------------------ [ERROR] Plugin org.springframework.boot:spring-boot-maven-plugin:2.2.2.RELEASE or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.springframew ork.boot:spring-boot-maven-plugin:jar:2.2.2.RELEASE: Could not transfer artifact org.springframework.boot:spring-boot-maven-plugin:pom:2.2.2.RELEASE from/to central (http://repo.maven. apache.org/maven2): Failed to transfer file: http://repo.maven.apache.org/maven2/org/springframework/boot/spring-boot-maven-plugin/2.2.2.RELEASE/spring-boot-maven-plugin-2.2.2.RELEASE. pom. Return code is: 501 , ReasonPhrase:HTTPS Required. -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException PS C:\Users\16283\Desktop\springbootc8hzm>

2023-07-23 上传