专业的编程技术博客社区

网站首页 > 博客文章 正文

Spring Boot执行过程(执行springboot的jar)

baijin 2025-07-23 12:55:20 博客文章 6 ℃ 0 评论

Spring Boot 执行过程流程图

graph TD

A[启动 main 方法] --> B[创建 SpringApplication 实例]

B --> C[准备环境 Environment]

C --> D[创建 ApplicationContext]

D --> E[准备上下文]

E --> F[刷新上下文 refresh()]

F --> G[执行 BeanFactoryPostProcessor]

G --> H[注册 BeanPostProcessor]

H --> I[初始化 MessageSource]

I --> J[初始化事件广播器]

J --> K[注册监听器]

K --> L[完成 BeanFactory 初始化]

L --> M[完成上下文刷新]

M --> N[调用 Runner 接口]

N --> O[启动内嵌 Web 服务器]

O --> P[应用就绪]

subgraph 刷新上下文关键步骤

F --> G1[准备 BeanFactory]

G1 --> G2[执行 BeanFactoryPostProcessor]

G2 --> G3[注册 BeanPostProcessor]

G3 --> G4[初始化单例 Bean]

G4 --> G5[发布 ContextRefreshedEvent]

end

详细步骤说明:

  1. 启动 main 方法
  • 执行SpringApplication.run(Application.class, args)
  1. 创建 SpringApplication 实例
  • 加载META-INF/spring.factories中的配置初始化ApplicationContextInitializer和ApplicationListener
  1. 准备环境 (Environment)
  • 加载配置(application.properties/yml)激活 Profiles(如 dev/test/prod)
  1. 创建 ApplicationContext
  • 根据应用类型创建上下文(Servlet/Reactive)示例:AnnotationConfigServletWebServerApplicationContext
  1. 准备上下文
  • 执行ApplicationContextInitializer注册主配置类(@SpringBootApplication注解类)
  1. 刷新上下文 (refresh())
  • 核心阶段,包含以下子步骤:准备 BeanFactory(设置类加载器、表达式解析器)执行BeanFactoryPostProcessor(解析@Configuration,扫描@Component)注册BeanPostProcessor(处理依赖注入、AOP 等)初始化单例 Bean(依赖注入、@PostConstruct回调)发布ContextRefreshedEvent事件
  1. 启动内嵌 Web 服务器
  • 创建 Tomcat/Jetty/Undertow 实例部署 DispatcherServlet(Servlet 应用)
  1. 调用 Runner 接口
  • 执行ApplicationRunner和CommandLineRunner
  1. 应用就绪
  • 接收 HTTP 请求发布ApplicationReadyEvent

关键流程图解:

main()

├─> SpringApplication.run()

│ │

│ ├─> 初始化环境 (加载配置/Profiles)

│ │

│ ├─> 创建 ApplicationContext

│ │

│ └─> refreshContext() [核心]

│ │

│ ├─> prepareRefresh()

│ │

│ ├─> obtainFreshBeanFactory()

│ │

│ ├─> prepareBeanFactory()

│ │

│ ├─>
invokeBeanFactoryPostProcessors() // 解析配置类

│ │

│ ├─>
registerBeanPostProcessors() // 注册 Bean 处理器

│ │

│ ├─>
finishBeanFactoryInitialization() // 初始化单例 Bean

│ │

│ └─> finishRefresh() // 启动 Web 服务器

└─> 调用 Runners → 应用就绪

核心机制:

  • Bean 生命周期控制:通过BeanPostProcessor实现 AOP、事务管理等
  • 自动配置:@EnableAutoConfiguration触发spring.factories中的自动配置类
  • 事件驱动:ApplicationEvent和ApplicationListener实现扩展点(如启动日志、初始化检查)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表