java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot运行机制

springboot的运行机制详细解读

作者:杰西笔记

SpringBoot是Spring框架的封装与增强,通过自动配置和内嵌服务器简化了JavaWeb开发,从宏观架构、启动流程、核心原理三个层面深入解析,强调了控制反转、自动配置和Starter机制,通过若依项目实例展示了如何在实际应用中使用SpringBoot,感兴趣的朋友跟随小编一起看看吧

理解 Spring Boot 的运行机制,是掌握现代 Java Web 开发的关键。我们可以从 宏观架构 + 启动流程 + 核心原理 三个层面来系统性地拆解。

🌟 一句话总结

Spring Boot = Spring 框架 + 自动配置(AutoConfiguration)+ 内嵌服务器(如 Tomcat) + 约定优于配置(Convention over Configuration)

它让你 不用写 XML、不用配 web.xml、不用手动部署 WAR 包,直接 main() 方法启动一个完整的 Web 应用。

一、宏观视角:Spring Boot 是如何工作的?

🧩 整体架构图(简化版)

graph LR
    A[你的代码] --> B(Spring Boot Starter)
    B --> C[Spring Framework]
    C --> D[内嵌 Tomcat/Jetty]
    D --> E[HTTP 请求/响应]
    F[application.yml] --> C
    G[@SpringBootApplication] --> C

二、启动流程详解(从 main() 到接收请求)

🔁 步骤 1:执行main()方法

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args); // ← 关键入口
    }
}

这不是普通程序入口,而是 启动 Spring 容器的命令

🔁 步骤 2:创建SpringApplication实例

SpringApplication.run() 内部会:

🔁 步骤 3:刷新 Spring 应用上下文(refresh context)

这是最核心的一步,包含以下子过程:

✅ 3.1 扫描组件(Component Scan)

✅ 3.2 加载自动配置(AutoConfiguration)

💡 这就是为什么你只加 mybatis-spring-boot-starter,MyBatis 就能自动工作!

✅ 3.3 创建 Bean 实例(IoC 容器初始化)

✅ 3.4 启动内嵌 Web 服务器

✅ 3.5 触发启动完成事件

🔁 步骤 4:等待并处理 HTTP 请求

当用户访问 http://localhost:8080/api/user

浏览器 → 
  ↓
内嵌 Tomcat 接收请求 → 
  ↓
DispatcherServlet(前端控制器) → 
  ↓
HandlerMapping 找到匹配的 @Controller → 
  ↓
调用对应方法(如 getUser()) → 
  ↓
返回结果(JSON / 页面) → 
  ↓
Tomcat 返回响应给浏览器

✅ 整个过程由 Spring MVC 驱动,而 Spring MVC 是 Spring Framework 的一部分。

三、核心机制解析

1️⃣控制反转(IoC)与依赖注入(DI)

👉 结果:代码解耦,易于测试和维护。

2️⃣自动配置(AutoConfiguration)

Spring Boot 通过 @EnableAutoConfiguration 实现“智能配置”。

例如:

✅ 你只需在 application.yml 中写:

spring:
  datasource:
    url: jdbc:mysql://...

3️⃣Starter 机制

Starter 是“一站式依赖包”,比如:

Starter功能
spring-boot-starter-webWeb 开发(含 Tomcat + Spring MVC)
mybatis-spring-boot-starterMyBatis 集成
spring-boot-starter-data-redisRedis 支持

💡 引入 starter 后,Spring Boot 自动完成配置,你几乎不用写代码。

4️⃣内嵌服务器

四、若依(RuoYi)项目中的体现

你在若依项目中看到的:

@SpringBootApplication
@EnableAsync
@EnableTransactionManagement
public class RuoYiApplication {
    public static void main(String[] args) {
        SpringApplication.run(RuoYiApplication.class, args);
    }
}

当你访问 /system/user/list

  1. 请求被 Tomcat 接收
  2. DispatcherServlet 路由到 SysUserController.list()
  3. 调用 SysUserService.selectUserList()
  4. SysUserMapper.selectUserList() 执行 SQL
  5. 返回 JSON 数据

✅ 全程由 Spring Boot 自动串联,你只需关注业务逻辑。

五、可视化:Spring Boot 启动流程图

main() SpringApplication ApplicationContext Tomcat DispatcherServlet run() create & refresh() scan components load auto-configurations create beans (IoC) start embedded server register DispatcherServlet ready! Wait for HTTP requests... main() SpringApplication ApplicationContext Tomcat DispatcherServlet

六、常见误区澄清

误区正确理解
❌ “Spring Boot 是一个新框架”✅ 它是 Spring Framework 的封装和增强
❌ “必须用注解,不能用 XML”✅ 仍可混合使用 XML 配置(但不推荐)
❌ “自动配置无法定制”✅ 可通过 application.yml 覆盖,或 @EnableAutoConfiguration(exclude=...) 禁用
❌ “Bean 是多例的”✅ 默认是单例(Singleton),可通过 @Scope("prototype") 改变

七、总结:Spring Boot 的设计哲学

原则说明
约定优于配置默认行为合理,减少配置
开箱即用引入 starter 即可工作
生产就绪内置监控(Actuator)、健康检查
快速开发热部署、简化部署(JAR 直接运行)

💡 学习建议

  1. 先会用:写 Controller、Service、Mapper,跑通 CRUD
  2. 再理解:看启动日志,了解自动配置过程
  3. 最后深入:阅读 spring-boot-autoconfigure 源码,理解条件装配

到此这篇关于springboot的运行机制解析的文章就介绍到这了,更多相关springboot运行机制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文