Spring Boot = 帮你自动配置好的 Spring 后端项目脚手架。它不是新语言,也不是替代 Spring,而是让你更快搭建后端服务。
1. 先理解 SSM 是什么
SSM 指的是:
| 名称 | 作用 | 类比 Python Web |
|---|---|---|
| Spring | 管理对象、依赖注入、业务层 | 类似一个大型对象管理容器 |
| Spring MVC | 接收 HTTP 请求,写接口 | 类似 Flask / FastAPI 路由 |
| MyBatis | 操作数据库 | 类似 Python 里的 ORM / SQL Mapper |
传统 SSM 项目需要手动配置很多东西:
web.xml
spring-mvc.xml
applicationContext.xml
mybatis-config.xml
数据库连接池配置
Tomcat 部署配置
Mapper 扫描配置
Controller 扫描配置
Service 扫描配置
所以初学者经常会觉得:
我只是想写一个接口,为什么要配这么多 XML?
Spring Boot 就是为了解决这个问题。
2. 什么是 Spring Boot?
Spring Boot 是基于 Spring 的快速开发框架。官方对它的定位是:帮助开发者快速创建可以独立运行、面向生产环境的 Spring 应用。(Home)
你可以简单理解为:
Spring Boot = Spring + 自动配置 + 内置服务器 + Starter依赖
它帮你做了几件重要的事:
| Spring Boot 能做什么 | 解释 |
|---|---|
| 自动配置 | 根据你引入的依赖自动配置 Spring MVC、Tomcat、JSON 等 |
| 内置 Tomcat | 不需要你手动安装外部 Tomcat |
| 快速创建 Web 项目 | 引入 spring-boot-starter-web 就能写接口 |
| 简化配置文件 | 用 application.properties 或 application.yml 管理配置 |
| 方便打包运行 | 可以打成 jar,直接 java -jar 运行 |
3. Spring Boot 开发环境
现在主流 Spring Boot 版本要求至少 Java 17;官方文档显示 Spring Boot 当前版本需要 Java 17 及以上,Maven 需要 3.6.3 或更高版本。(Home)
建议你安装:
JDK 17 或 JDK 21
IntelliJ IDEA
Maven
Spring Boot
初学者推荐使用:
JDK 17
Maven
Spring Boot 3.x 或 4.x
创建项目最简单的方法是用 Spring Initializr。官方入门文档也建议通过 Spring Initializr 创建 Spring Boot 项目。(Home)
项目选择:
Project: Maven
Language: Java
Spring Boot: 3.x / 4.x
Packaging: Jar
Java: 17
Dependencies:
Spring Web
4. Spring Boot 项目结构
一个最简单的 Spring Boot Web 项目大概长这样:
demo
├── src
│ └── main
│ ├── java
│ │ └── com.example.demo
│ │ ├── DemoApplication.java
│ │ └── controller
│ │ └── HelloController.java
│ └── resources
│ └── application.yml
└── pom.xml
其中最重要的是这几个:
| 文件 | 作用 |
|---|---|
DemoApplication.java |
Spring Boot 启动类 |
HelloController.java |
写后端接口 |
application.yml |
写端口、数据库等配置 |
pom.xml |
管理依赖 |
5. 入口类:DemoApplication
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);
}
}
这里重点看这个注解:
@SpringBootApplication
它表示:
这是一个 Spring Boot 项目
请自动配置
请扫描当前包及其子包下的组件
所以你的 Controller、Service、Mapper 一般都要放在 com.example.demo 这个包下面,或者它的子包里面。
6. application.properties / application.yml 是什么?
Spring Boot 支持通过 application.properties 或 application.yml 写配置。官方文档说明,配置可以写在 properties 文件、yaml 文件、环境变量或命令行参数中。(Home)
写法一:application.properties
server.port=8080
spring.application.name=demo
写法二:application.yml
server:
port: 8080
spring:
application:
name: demo
两者作用一样,只是写法不同。
我更推荐你初学时用 application.yml,层级更清楚。
7. 编写第一个 Spring Boot Web 接口
新建:
src/main/java/com/example/demo/controller/HelloController.java
代码如下:
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}
启动项目后,浏览器访问:
http://localhost:8080/hello
你会看到:
Hello Spring Boot!
这就是你的第一个后端接口。
8. 再写一个带参数的接口
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/user")
public String getUser(@RequestParam String name) {
return "你好," + name;
}
}
访问:
http://localhost:8080/user?name=小羊
返回:
你好,小羊
这里的:
@RequestParam String name
表示从 URL 参数中取值。
也就是:
/user?name=小羊
里面的 name 会传给 Java 里的 String name。
9. 从 Python 角度理解 Spring Boot 接口
如果你熟悉 Flask,可以这样类比:
Flask 写法
@app.route("/hello")
def hello():
return "Hello"
Spring Boot 写法
@GetMapping("/hello")
public String hello() {
return "Hello";
}
区别是:
Flask 用函数写路由
Spring Boot 用类 + 方法 + 注解写路由
Spring Boot 的"绕",主要来自 Java 的面向对象和注解体系。
10. 最小知识闭环
初学者掌握这几个注解就够了:
| 注解 | 作用 |
|---|---|
@SpringBootApplication |
启动 Spring Boot 项目 |
@RestController |
声明这是一个接口类 |
@GetMapping |
处理 GET 请求 |
@PostMapping |
处理 POST 请求 |
@RequestParam |
获取 URL 参数 |
@PathVariable |
获取路径参数 |
@RequestBody |
获取 JSON 请求体 |
@Service |
声明业务逻辑类 |
@Autowired |
自动注入对象,后面可以逐渐少用 |
11. 一个最小完整示例
package com.example.demo.controller;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class DemoController {
@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot";
}
@GetMapping("/user")
public String user(@RequestParam String name) {
return "用户名称:" + name;
}
@GetMapping("/student/{id}")
public String student(@PathVariable Integer id) {
return "学生ID:" + id;
}
}
访问:
http://localhost:8080/api/hello
http://localhost:8080/api/user?name=Tom
http://localhost:8080/api/student/1001
这三个接口分别演示了:
普通 GET 接口
URL 参数
路径参数