【Spring Boot】控制器Controller方法

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 内部的请求为:

  1. 前端控制器接收所有请求;
  2. 根据 URL 和 HTTP 方法,查找匹配的 Controller 方法(通过 @GetMapping等注释);
  3. 解析参数;
  4. 调用方法;
  5. 返回值序列化为 JSON,写入 HTTP 响应;
  6. 返回给客户端。
相关推荐
Rain的Java大神之路11 小时前
面试被LeetCode 27(移除元素)问懵?别再用两层 for 循环了:一道“简单题”吃透双指针原地删除,附面试加分话术 + 11 个避坑清单
后端·leetcode·面试
悟天特斯11 小时前
安防一体化:从“各管各的“到“全局联动“
java·大数据·网络·人工智能·物联网
70后写java的老码农11 小时前
Spring Boot 3.x + ShardingSphere 5.x + MyBatis-Plus 3.x:订单分库分表实战(含两个踩坑记录)
java
霸道流氓气质11 小时前
AI 翻译插件:翻译记忆级联复用、术语混合检索与结构化质量门禁的 Vue3 + Spring AI 生产级实战
java·人工智能·spring
斯维赤12 小时前
OCR到底是接入第三方API 还是自己封装?
java·ocr
利威尔xu12 小时前
Go IM 源码实战(11):token 只是个 HASH,多端互踢的顺序错了就踢错人
后端·微服务·面试·架构·golang
码智社12 小时前
Redis 哨兵模式详解:从原理到生产实践
java·redis
救救孩子把12 小时前
结构化输出为何“格式正确、答案错误”?JSON Schema 的能力边界
android·java·json·agent·agent服务
猿究院--Cu-Sn合金12 小时前
Spring Boot + DeepSeek 求职 Agent 实践:工具注册、多轮调用与简历 JD 对比
数据库·人工智能·spring boot·后端·deepseek
程序员cxuan12 小时前
别学 subagent 了,很可能要凉了。
后端·agent·ai编程