SpringBoot启动流程
# 启动流程
加载启动类;
启动入口是一个main方法,调用SpringApplication.run()方法启动Spring Boot应用,参数一般传入主配置类(Main Application Class);
创建Spring应用上下文;
ApplicationContext:自动扫描应用中组件,根据配置自动装配这些组件;
自动装配;
根据@SpringBootApplication,根据应用的环境和依赖,自动配置好数据库连接、HTTP 容器、消息队列等各种组件;
执行Starters;
启动器通常包含了一系列常用的依赖,比如 Web Starter、Data JPA Starter 等,它们能够一次性地引入多个相关的依赖,从而简化了配置;
执行 CommandLineRunner 和 ApplicationRunner;
Spring Boot 允许开发者定义实现了
CommandLineRunner
或ApplicationRunner
接口的类,并将它们注册到应用上下文中。这些类会在 Spring Boot 应用启动完成后被执行,开发者可以在这些类中编写一些启动时需要执行的逻辑;启动Web服务器;
如果应用中包含了 Web 组件(比如 Spring MVC、Spring WebFlux 等),Spring Boot 将会启动内嵌的 Web 服务器(如 Tomcat、Jetty、Undertow 等),并将请求分发给相应的控制器进行处理;
加载外部配置文件;
如 application.properties 或 application.yml,将配置信息注入到相应的 Bean 中;
监听应用事件;
Spring Boot 提供了一个事件模型,开发者可以通过监听应用事件来执行一些特定的逻辑。比如可以监听应用启动事件、关闭事件等;