SpringBoot内置容器概念
SpringBoot 内嵌 Servlet 容器,无需部署到外部 Tomcat。
传统方式 vs 内嵌容器
| 对比项 | 传统方式 | SpringBoot内嵌 |
|---|---|---|
| 部署方式 | 打WAR包部署到Tomcat | 打JAR包直接运行 |
| 启动方式 | 启动外部Tomcat | java -jar启动 |
| 配置复杂度 | 需配置Tomcat | 自动配置 |
| 资源占用 | 独立Tomcat进程 | 共享应用进程 |
内置容器原理
Java
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
// 启动内嵌Tomcat
}
}
SpringBoot 在启动时:
- 检测 Web 环境类型
- 自动创建并启动内嵌容器
- 注册 Servlet、Filter、Listener
支持的容器
| 容器 | 默认 | 特点 |
|---|---|---|
| Tomcat | 是 | 稳定成熟,企业级首选 |
| Jetty | 否 | 轻量级,低内存占用 |
| Undertow | 否 | 高性能非阻塞IO |
容器依赖
XML
<!-- spring-boot-starter-web 默认包含 Tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
容器选择依据
| 场景 | 推荐 |
|---|---|
| 企业级应用 | Tomcat |
| 微服务/云原生 | Undertow |
| 低资源环境 | Jetty |
核心优势
- 简化部署:一个JAR包包含所有依赖
- 快速启动:秒级启动,适合微服务
- 便于测试:本地直接运行,无需配置容器
- DevOps友好:容器化部署更简单
内嵌容器是 SpringBoot"开箱即用"理念的核心体现。
要点总结
- 内嵌容器无需外部Tomcat部署
- 默认使用Tomcat,可切换Jetty/Undertow
- JAR包方式运行,简化运维
- 适合微服务和云原生场景
📝 发现内容有误?点击此处直接编辑