Controller
在 Spring Boot 的Web应用中,Controller是处理HTTP请求的入口。
核心职责
- 接受客户端发送的HTTP请求
- 调用 Service 层完成业务逻辑
- 将处理结果封装后返回给客户端
MVC (Model-View-Controller)中的"C"
如何定义Controller
在 Spring Boot 中,使用注解来声明一个类是 Controller。
示例代码
java
@RestController
@RequestMapper("/api/members")
public class MemberController{
// 方法
}
注解说明
@RestController 告诉Spring,这是一个用于RESTful API 的控制器,所有方法的返回值都会自动转为 JSON。
@RequestMapping 定义该控制器的公共请求前缀
Controller 方法
每个 Controller 方法,对应一个具体的HTTP接口。
基本结构
java
@HTTP_METHOD_MAPPING("路径")
public 返回类型 方法名(参数){
// 1. 接收参数
// 2. 调用 Service
// 3. 返回结果
}
HTTP_METHOD_MAPPING

这些是 @RequestMapping(method = ...)的简写
路径
路径中可以用 {变量名}表示动态部分
@GetMapping("/projects/{projectId}/members")
参数的接收方式
Spring Boot 提供多种注释,自动将 HTTP 请求中的数据绑定到方法参数。

示例
@GetMapping("/list/{projectId}")
public Result<List<MemberVO>> list(@PathVariable Long projectId) {
// 从 URL 路径中提取 projectId
}
@PostMapping("/create")
public Result<MemberVO> create(@RequestBody CreateMemberDTO dto) {
// 从 JSON 请求体中解析出 dto 对象
}
@GetMapping("/search")
public Result<List<MemberVO>> search(
@RequestParam String keyword,
@RequestParam(defaultValue = "1") Integer page
) {
// 从 ?keyword=xxx&page=2 中获取参数
}
返回值
在 @RestController中,任何返回值都会被自动转为 JSON 。
可以使用统一返回格式 ,如 Result<T>,这样前端收到的总是结构统一的JSON,便于处理。
执行流程
当发送一个HTTP请求时,Spring Boot 内部的请求为:
- 前端控制器接收所有请求;
- 根据 URL 和 HTTP 方法,查找匹配的 Controller 方法(通过
@GetMapping等注释); - 解析参数;
- 调用方法;
- 返回值序列化为 JSON,写入 HTTP 响应;
- 返回给客户端。