一、前言
Spring Boot 是目前 Java 后端开发最主流的框架之一,它通过"约定大于配置"的理念,让我们无需繁琐的 XML 配置就能快速搭建一个 Web 应用。本文作为 Spring Boot 入门第一课,将从零开始完成一个 HelloWorld 程序,并在此基础上实现支持GET、POST、PUT、DELETE四种 HTTP 请求的后端接口,最后用 Postman 进行测试。
二、环境准备
| 工具 | 说明 |
|---|---|
| JDK | 17 或以上版本 |
| Maven | 3.6+(或使用项目自带的 mvnw) |
| IDEA | IntelliJ IDEA(社区版/旗舰版均可) |
| Postman | 用于测试 HTTP 接口 |
三、创建 Spring Boot 项目
- 打开 IDEA,选择
New Project→Spring Initializr(也可以直接访问 https://start.spring.io)。 - 填写项目信息:
- Group:
com.example - Artifact:
demo - Java 版本:17
- Group:
- 添加依赖:
Spring Web。 - 点击生成,等待 Maven 依赖下载完成。
生成的项目结构如下:
demo ├── src │ ├── main │ │ ├── java │ │ │ └── com.example.demo │ │ │ ├── DemoApplication.java # 启动类 │ │ │ ├── controller # 控制器层 │ │ │ └── model # 实体类 │ │ └── resources │ │ └── application.properties # 配置文件 │ └── test └── pom.xml四、HelloWorld:第一个接口
在controller包下创建HelloController:
packagecom.example.demo.controller;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassHelloController{@GetMapping("/hello")publicStringhello(){return"Hello zhudongxin";}}注解说明:
@RestController:组合注解,相当于@Controller+@ResponseBody,表示该类是一个 REST 风格的控制器,返回值直接作为 HTTP 响应体。@GetMapping("/hello"):将 HTTP GET 请求/hello映射到hello()方法。
启动DemoApplication,浏览器或 Postman 访问http://localhost:8080/hello,返回:
Hello zhudongxinHelloWorld 完成!
五、实现 GET / POST / PUT / DELETE 接口
下面实现一个简单的用户(User)管理接口,包含我自己的姓名和年龄(zhudongxin,21 岁)。
5.1 创建实体类 User
在model包下创建User.java:
packagecom.example.demo.model;publicclassUser{privateStringname="zhudongxin";privateintage=21;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}5.2 创建 UserController
在controller包下创建UserController.java,用一个HashMap模拟数据库存储用户数据:
packagecom.example.demo.controller;importcom.example.demo.model.User;importorg.springframework.web.bind.annotation.*;importjava.util.HashMap;importjava.util.Map;@RestController@RequestMapping("/api/users")publicclassUserController{privatefinalMap<Long,User>userStore=newHashMap<>();privatelongnextId=1;// 构造方法:初始化一条自己的数据publicUserController(){Useruser=newUser();user.setName("zhudongxin");user.setAge(21);userStore.put(nextId,user);}// GET:查询所有用户@GetMappingpublicMap<Long,User>getAllUsers(){returnuserStore;}// GET:根据 id 查询用户@GetMapping("/{id}")publicUsergetUserById(@PathVariableLongid){returnuserStore.get(id);}// POST:新增用户@PostMappingpublicUsercreateUser(@RequestBodyUseruser){userStore.put(++nextId,user);returnuser;}// PUT:根据 id 更新用户@PutMapping("/{id}")publicUserupdateUser(@PathVariableLongid,@RequestBodyUseruser){userStore.put(id,user);returnuser;}// DELETE:根据 id 删除用户@DeleteMapping("/{id}")publicStringdeleteUser(@PathVariableLongid){userStore.remove(id);return"User deleted successfully";}}核心注解说明:
| 注解 | 作用 |
|---|---|
@RequestMapping("/api/users") | 类级别的请求路径前缀 |
@GetMapping | 处理 GET 请求(查询) |
@PostMapping | 处理 POST 请求(新增) |
@PutMapping | 处理 PUT 请求(更新) |
@DeleteMapping | 处理 DELETE 请求(删除) |
@PathVariable | 从 URL 路径中获取参数(如 id) |
@RequestBody | 将请求体中的 JSON 自动转为 Java 对象 |
四种请求对应 RESTful 风格的 CRUD 语义:
- GET→ 查询(Read)
- POST→ 新增(Create)
- PUT→ 更新(Update)
- DELETE→ 删除(Delete)
六、使用 Postman 测试
启动项目后,打开 Postman 依次测试以下接口。
6.1 GET 查询所有用户
- 请求方式:
GET - URL:
http://localhost:8080/api/users
响应结果:
{"1":{"name":"zhudongxin","age":21}}6.2 POST 新增用户
- 请求方式:
POST - URL:
http://localhost:8080/api/users - 请求头:
Content-Type: application/json - 请求体(Body → raw → JSON):
{"name":"zhudongxin","age":21}响应结果:
{"name":"zhudongxin","age":21}6.3 PUT 更新用户
- 请求方式:
PUT - URL:
http://localhost:8080/api/users/1 - 请求体:
{"name":"zhudongxin","age":22}响应结果:
{"name":"zhudongxin","age":22}6.4 DELETE 删除用户
- 请求方式:
DELETE - URL:
http://localhost:8080/api/users/1
响应结果:
User deleted successfully再次用 GET 查询,id=1的用户已被删除,验证成功。
七、常见问题
启动报错:端口被占用(Port 8080 was already in use)
说明 8080 端口已有程序在运行,可以关掉旧进程,或在application.properties中修改端口:server.port=8081Postman 返回 404
检查 URL 路径是否与@RequestMapping/@GetMapping中的路径一致,注意大小写。POST/PUT 返回 415 错误
检查请求头是否设置了Content-Type: application/json,Body 是否选择 raw + JSON 格式。
八、总结
本文完成了 Spring Boot 的入门实践:
- 使用 Spring Initializr 快速创建项目;
- 通过
@RestController+@GetMapping实现 HelloWorld; - 使用
@GetMapping、@PostMapping、@PutMapping、@DeleteMapping实现了完整的 RESTful CRUD 接口; - 使用 Postman 对四种 HTTP 请求进行了测试。
后续可以继续学习:接入 MySQL 数据库(Spring Data JPA / MyBatis)、参数校验、统一异常处理、Swagger 接口文档等内容。