admin管理员组文章数量:1032061
Spring Boot的启动
Spring Boot的启动过程可以清晰地划分为几个主要阶段,以下是按照关键步骤进行的详细阐述:
一、启动准备阶段
- 加载启动类:
- 当SpringBoot项目启动时,它会在当前工作目录下寻找带有
@SpringBootApplication
注解标识的类,并把这个类作为应用程序的入口点。 - 如果找不到这样的主类,则会打印错误信息并退出。
- 当SpringBoot项目启动时,它会在当前工作目录下寻找带有
- 创建StopWatch实例:
- 用于记录SpringBoot的启动时间。
- 加载监听器:
- 使用
SpringFactoriesLoader
加载监听器,如EventPublishingRunListener
。
- 使用
二、配置加载阶段
- 加载配置文件:
- SpringBoot会自动扫描当前项目的
resources
目录,并加载其中的application.properties
或application.yml
等配置文件。 - 这些配置文件中包含了应用程序的各种参数,例如数据库连接信息、日志级别等。
- SpringBoot会自动扫描当前项目的
- 配置环境:
- 创建和配置
Environment
,该对象包含了应用程序的运行环境信息。
- 创建和配置
三、初始化ApplicationContext
- 创建ApplicationContext:
- 根据项目类型(Web、Reactive、非Web)创建相应的
ApplicationContext
实例。
- 根据项目类型(Web、Reactive、非Web)创建相应的
- 加载Bean:
- 扫描当前项目中的所有Bean,并将它们注册到
ApplicationContext
中。 - 加载自动配置,根据starter依赖中的
Configuration
和Bean的装配情况,自动装配相应的Bean。
- 扫描当前项目中的所有Bean,并将它们注册到
四、启动内嵌的Web服务器
- 如果项目是一个Web应用,SpringBoot会根据配置文件中的信息自动创建Tomcat或Jetty等Web容器,并将Spring容器注册到Web容器中,使得SpringBoot应用程序可以直接以Web应用程序的形式运行。
五、启动应用程序
- 根据之前创建好的Spring容器以及Web服务器,启动相应的线程进行服务处理。
六、监听应用程序的状态
- SpringBoot会监听应用程序的状态,并根据需要进行相应的操作。
- 例如,当应用程序退出时,它会打印出详细的日志信息,并将应用程序的上下文环境恢复到初始状态。
七、发布事件
- 在启动的不同阶段,SpringBoot会发布各种事件,如
started()
、ready()
等,允许开发者在特定的时间点执行自定义的逻辑。
八、停止计时并打印日志
- StopWatch停止计时,并打印出整个启动过程所花费的时间。
整个启动过程体现了Spring Boot的自动化和简洁性,开发者只需关注业务逻辑的实现,而无需过多关注底层的启动细节。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-05-25,如有侵权请联系 cloudcommunity@tencent 删除spring容器boot配置日志Spring Boot的启动
Spring Boot的启动过程可以清晰地划分为几个主要阶段,以下是按照关键步骤进行的详细阐述:
一、启动准备阶段
- 加载启动类:
- 当SpringBoot项目启动时,它会在当前工作目录下寻找带有
@SpringBootApplication
注解标识的类,并把这个类作为应用程序的入口点。 - 如果找不到这样的主类,则会打印错误信息并退出。
- 当SpringBoot项目启动时,它会在当前工作目录下寻找带有
- 创建StopWatch实例:
- 用于记录SpringBoot的启动时间。
- 加载监听器:
- 使用
SpringFactoriesLoader
加载监听器,如EventPublishingRunListener
。
- 使用
二、配置加载阶段
- 加载配置文件:
- SpringBoot会自动扫描当前项目的
resources
目录,并加载其中的application.properties
或application.yml
等配置文件。 - 这些配置文件中包含了应用程序的各种参数,例如数据库连接信息、日志级别等。
- SpringBoot会自动扫描当前项目的
- 配置环境:
- 创建和配置
Environment
,该对象包含了应用程序的运行环境信息。
- 创建和配置
三、初始化ApplicationContext
- 创建ApplicationContext:
- 根据项目类型(Web、Reactive、非Web)创建相应的
ApplicationContext
实例。
- 根据项目类型(Web、Reactive、非Web)创建相应的
- 加载Bean:
- 扫描当前项目中的所有Bean,并将它们注册到
ApplicationContext
中。 - 加载自动配置,根据starter依赖中的
Configuration
和Bean的装配情况,自动装配相应的Bean。
- 扫描当前项目中的所有Bean,并将它们注册到
四、启动内嵌的Web服务器
- 如果项目是一个Web应用,SpringBoot会根据配置文件中的信息自动创建Tomcat或Jetty等Web容器,并将Spring容器注册到Web容器中,使得SpringBoot应用程序可以直接以Web应用程序的形式运行。
五、启动应用程序
- 根据之前创建好的Spring容器以及Web服务器,启动相应的线程进行服务处理。
六、监听应用程序的状态
- SpringBoot会监听应用程序的状态,并根据需要进行相应的操作。
- 例如,当应用程序退出时,它会打印出详细的日志信息,并将应用程序的上下文环境恢复到初始状态。
七、发布事件
- 在启动的不同阶段,SpringBoot会发布各种事件,如
started()
、ready()
等,允许开发者在特定的时间点执行自定义的逻辑。
八、停止计时并打印日志
- StopWatch停止计时,并打印出整个启动过程所花费的时间。
整个启动过程体现了Spring Boot的自动化和简洁性,开发者只需关注业务逻辑的实现,而无需过多关注底层的启动细节。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-05-25,如有侵权请联系 cloudcommunity@tencent 删除spring容器boot配置日志本文标签: Spring Boot的启动
版权声明:本文标题:Spring Boot的启动 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://it.en369.cn/jiaocheng/1747909652a2226307.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论