- Spring Boot 是什么? 它如何帮助我们构建服务器?
- 如何使用 Spring Boot 创建和运行一个服务器?
下面我将从这两个层面,由浅入深地进行详细解释。

第一部分:Spring Boot 是什么?它如何成为一个服务器?
一个非常重要的概念澄清:Spring Boot 本身不是一个服务器。
- 服务器:是一个运行环境,负责接收客户端的请求、处理并返回响应,Tomcat、Jetty、Undertow 都是知名的服务器(也称为 Servlet 容器)。
- Spring Boot:是一个框架,它的核心目标是简化创建和运行生产级 Spring 应用程序的过程。
Spring Boot 如何“变成”一个服务器呢?答案是:内嵌服务器。
Spring Boot 的一个革命性特性就是自动配置 和 起步依赖,这意味着:
- 你无需手动下载、配置和集成 Tomcat 或 Jetty 等服务器。
- 你只需要在你的项目依赖中引入
spring-boot-starter-web,Spring Boot 就会自动为你下载并配置好一个内嵌的 Tomcat 服务器(默认是 Tomcat)。 - 你只需要写你的业务逻辑代码,然后运行你的 Java 主程序,Spring Boot 就会自动启动这个内嵌的服务器,让你的应用程序 ready to serve。
总结一下:你用 Spring Boot 框架构建的是一个应用程序,而这个应用程序在运行时,会“自带”一个内嵌的服务器(如 Tomcat),因此从外部看来,它就是一个完整的服务。

第二部分:如何使用 Spring Boot 创建一个服务器(一个 Web 应用)
下面我们通过一个最经典的 "Hello, World!" 示例,来展示如何用 Spring Boot 搭建一个简单的 Web 服务器。
步骤 1:环境准备
确保你已经安装了以下软件:
- JDK 8 或更高版本
- Maven 或 Gradle(项目构建工具,这里以 Maven 为例)
- 一个你喜欢的 IDE(如 IntelliJ IDEA 或 VS Code)
步骤 2:创建 Spring Boot 项目
有几种方式可以创建项目:
使用 Spring Initializr(最推荐)
- 访问 https://start.spring.io/
- 配置项目参数:
- Project: Maven Project
- Language: Java
- Spring Boot: 选择一个稳定的版本(如 3.x.x)
- Project Metadata:
- Group:
com.example - Artifact:
demo - Name:
demo - Packaging: Jar
- Java: 选择你的 JDK 版本
- Group:
- Dependencies: 在依赖搜索框中输入
Spring Web,然后点击Add,这会自动添加spring-boot-starter-web依赖。
- 点击
GENERATE按钮,下载生成的demo.zip压缩包。 - 将压缩包解压,并用你的 IDE 打开这个项目。
使用 IDE 的内置工具
IntelliJ IDEA 和 VS Code 都有内置的 Spring Initializr 向导,可以让你在 IDE 内直接完成项目创建。
步骤 3:编写代码
项目创建好后,你会看到一个类似下面的文件结构:
demo
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ └── DemoApplication.java <-- 主程序入口
│ └── resources
│ ├── application.properties
│ └── static
│ └── templates
└── test
└── java
└── com
└── example
└── demo
└── DemoApplicationTests.java
-
主程序入口 (
DemoApplication.java)这个文件已经自动生成了,你不需要修改它。
@SpringBootApplication是一个核心注解,它组合了@Configuration,@EnableAutoConfiguration, 和@ComponentScan,告诉 Spring Boot 这是一个启动类。package com.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } -
创建一个 Web 控制器
在
src/main/java/com/example/demo目录下,创建一个新文件HelloController.java。package com.example.demo; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; // @RestController 是一个组合注解,相当于 @Controller + @ResponseBody // 它告诉 Spring 这个类中的所有方法返回的数据都直接作为 HTTP 响体的内容 @RestController public class HelloController { // @GetMapping 是一个组合注解,相当于 @RequestMapping(method = RequestMethod.GET) // 它将 HTTP GET 请求映射到该方法 @GetMapping("/hello") public String sayHello() { return "Hello, Spring Boot Server!"; } }
步骤 4:运行服务器
-
在 IDE 中找到
DemoApplication.java文件。 -
右键点击,选择
Run 'DemoApplication.main()'。 -
你会看到控制台输出一堆日志,最后会看到类似下面的信息,这表示内嵌的 Tomcat 服务器已经成功启动:
... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: :: v3.1.0 :: ... (更多日志) Tomcat started on port(s): 8080 (http) with context path '' ... (更多日志)Tomcat started on port(s): 8080:说明服务器正在 8080 端口监听请求。with context path '':说明应用的上下文路径是根路径。
步骤 5:测试你的服务器
打开你的浏览器或使用 API 工具(如 Postman、curl),访问以下 URL:
http://localhost:8080/hello
你将会在浏览器中看到:
Hello, Spring Boot Server!
恭喜! 你已经成功用 Spring Boot 创建并运行了一个自己的 Web 服务器!
第三部分:深入理解 Spring Boot 服务器的核心概念
服务器端口和上下文路径
默认情况下,Spring Boot 服务器运行在 8080 端口,上下文路径为空,你可以在 src/main/resources/application.properties 文件中轻松修改这些配置:
# 设置服务器端口为 9090 server.port=9090 # 设置上下文路径为 /myapi server.servlet.context-path=/myapi
修改后,你需要重新启动服务器,访问地址就变成了:
http://localhost:9090/myapi/hello
切换内嵌服务器
Spring Boot 默认使用 Tomcat,但你也可以轻松切换到 Jetty 或 Undertow。
-
切换到 Jetty
在
pom.xml中,排除 Tomcat 依赖,并添加 Jetty 依赖:<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除默认的 Tomcat --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加 Jetty 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jetty</artifactId> </dependency> <!-- 其他依赖... --> </dependencies>
打包成可执行 JAR
Spring Boot 项目可以非常方便地打包成一个可执行的 JAR 文件,这个 JAR 文件包含了你的所有代码以及内嵌的服务器。
-
在
pom.xml中添加spring-boot-maven-plugin(通常新项目已经自动配置好了):<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> -
在项目根目录下,通过命令行执行 Maven 打包命令:
mvn clean package
-
打包成功后,你会在
target目录下找到一个名为demo-0.0.1-SNAPSHOT.jar的文件。 -
你可以通过
java -jar命令在任何安装了 JDK 的机器上运行它,无需额外安装 Tomcat:java -jar target/demo-0.0.1-SNAPSHOT.jar
这就是 Spring Boot “开箱即用” 和 “约定优于配置” 理念的完美体现。
- Spring Boot 是一个框架,不是服务器。 它通过内嵌服务器(如 Tomcat)让你可以轻松地运行一个 Web 应用。
- 核心优势:极大地简化了 Java Web 应用的开发、配置和部署过程,你只需要关注业务逻辑,而不是繁琐的服务器配置。
- 关键特性:自动配置、起步依赖、内嵌服务器、可执行 JAR。
- 学习路径:掌握 Spring Boot 是现代 Java 后端开发的重要一步,在理解了上述基础后,你可以继续学习 Spring Boot 的更多高级特性,如:
- 数据访问:使用 Spring Data JPA、MyBatis 等。
- 安全:使用 Spring Security。
- 测试:使用 Spring Boot Test。
- 监控:使用 Actuator。
- 微服务:与 Spring Cloud 结合构建分布式系统。
