@Controller | 标记一个类为 Spring MVC 控制器,通常返回视图(如 Thymeleaf 模板)。 | 加在类上。 | 传统 MVC 应用,返回页面。 | java @Controller public class HomeController { @GetMapping("/") public String home(Model model) { model.addAttribute("msg", "Hello"); return "home"; } } |
@RestController | 组合 @Controller + @ResponseBody,方法返回值直接作为 HTTP 响应体(JSON/XML)。 | 加在类上。 | RESTful API 开发。 | java @RestController @RequestMapping("/api/users") public class UserController { @GetMapping("/{id}") public User getUser(@PathVariable Long id) { return userService.findById(id); } } |
@RequestMapping | 映射 HTTP 请求到控制器方法,可配置路径、方法、参数等。 | 类或方法上。 | 通用请求映射。 | java @RestController @RequestMapping("/api") public class ApiController { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String hello() { return "Hello"; } } |
@GetMapping | 组合 @RequestMapping(method = GET)。 | 方法上。 | 处理 GET 请求。 | java @GetMapping("/users") public List<User> list() { return userService.findAll(); } |
@PostMapping | 组合 @RequestMapping(method = POST)。 | 方法上。 | 处理 POST 请求(创建资源)。 | java @PostMapping("/users") public User create(@RequestBody User user) { return userService.save(user); } |
@PutMapping | 组合 @RequestMapping(method = PUT)。 | 方法上。 | 处理 PUT 请求(全量更新)。 | java @PutMapping("/users/{id}") public User update(@PathVariable Long id, @RequestBody User user) { return userService.update(id, user); } |
@DeleteMapping | 组合 @RequestMapping(method = DELETE)。 | 方法上。 | 处理 DELETE 请求。 | java @DeleteMapping("/users/{id}") public void delete(@PathVariable Long id) { userService.delete(id); } |
@PatchMapping | 组合 @RequestMapping(method = PATCH)。 | 方法上。 | 处理 PATCH 请求(部分更新)。 | java @PatchMapping("/users/{id}") public User partialUpdate(@PathVariable Long id, @RequestBody Map<String, Object> updates) { return userService.partialUpdate(id, updates); } |
@ResponseBody | 将方法返回值直接写入 HTTP 响应体(通常用于返回 JSON/XML)。 | 方法上,或类上结合 @Controller。 | 控制器方法返回 JSON 数据。 | java @Controller public class DataController { @GetMapping("/data") @ResponseBody public Map<String, Object> getData() { return Map.of("key", "value"); } } |
@RequestBody | 将 HTTP 请求体绑定到方法参数(自动反序列化 JSON/XML)。 | 方法参数上。 | 接收 POST/PUT 请求中的 JSON 数据。 | java @PostMapping("/users") public User create(@RequestBody User user) { return userService.save(user); } |
@RequestParam | 将请求参数绑定到方法参数。 | 方法参数上,可设置 required、defaultValue。 | 获取 URL 中的查询参数。 | java @GetMapping("/users") public List<User> list(@RequestParam(defaultValue = "0") int page) { return userService.findByPage(page); } |
@PathVariable | 将 URL 模板变量绑定到方法参数。 | 方法参数上。 | 获取 RESTful URL 中的路径变量。 | java @GetMapping("/users/{id}") public User get(@PathVariable Long id) { return userService.findById(id); } |
@RequestHeader | 将请求头信息绑定到方法参数。 | 方法参数上。 | 获取请求头,如 Token、User-Agent。 | java @GetMapping("/info") public String getInfo(@RequestHeader("User-Agent") String userAgent) { return userAgent; } |
@CookieValue | 将 Cookie 值绑定到方法参数。 | 方法参数上。 | 获取 Cookie 中的值。 | java @GetMapping("/") public String readCookie(@CookieValue(value = "sessionId",) String sessionId) { return sessionId; } |
@ModelAttribute | 将请求参数绑定到 Model 对象,或在方法执行前添加模型属性。 | 方法参数或方法上。 | 表单提交绑定对象,或为所有请求添加公共数据。 | java @PostMapping("/register") public String register(@ModelAttribute User user) { userService.save(user); return "success"; } |
@SessionAttributes | 将指定的模型属性存储到 HTTP 会话中。 | 类上。 | 跨请求保持模型属性(如购物车)。 | java @Controller @SessionAttributes("cart") public class CartController { @ModelAttribute("cart") public Cart createCart() { return new Cart(); } } |
@SessionAttribute | 从会话中获取指定的属性。 | 方法参数上。 | 获取会话中已存在的属性。 | java @GetMapping("/cart") public String viewCart(@SessionAttribute Cart cart) { // 使用 cart return "cartView"; } |
@RequestAttribute | 从请求中获取指定的属性(通常由过滤器或拦截器设置)。 | 方法参数上。 | 获取请求级别的属性。 | java @GetMapping("/profile") public String profile(@RequestAttribute("userId") Long userId) { return "User ID: " + userId; } |