SpringMVC核心注解:@RequestMapping详解

概述

@RequestMapping是SpringMVC中最核心的注解之一,用于将HTTP请求映射到MVC和REST控制器的处理方法上。

基本功能

@RequestMapping主要用于:

  • 映射URL到控制器类或方法
  • 定义请求方法类型(GET、POST等)
  • 定义请求参数、请求头等条件

使用位置

类级别:定义基本请求路径

java 复制代码
@RequestMapping("/order")
@Controller
public class OrderController {
    // ...
}

方法级别:定义具体路径和请求方法

java 复制代码
@RequestMapping(value = "/findAll", method = RequestMethod.GET)
@ResponseBody
public List<Order> findAll() {
    // ...
}

主要属性

属性名 说明 示例
value/path 映射的URL路径 @RequestMapping("/orders")
method 请求方法类型 method = RequestMethod.GET
params 请求方法参数 params = "type=book"
headers 请求头条件 headers = "content-type=text/*"
consumes 请求内容类型 consumes = "application/json"
produces 响应内容类型 produces = "application/json"

常见组合注解

Spring 4.3+ 提供了更简洁的派生注解代码

注解 等价于
@GetMapping @RequestMapping(method = RequestMethod.GET)
@PostMapping @RequestMapping(method = RequestMethod.POST)
@PutMapping @RequestMapping(method = RequestMethod.PUT)
@DeleteMapping @RequestMapping(method = RequestMethod.DELETE)
@PatchMapping @RequestMapping(method = RequestMethod.PATCH)

路径变量

可以与@PathVariable配合使用

java 复制代码
@GetMapping("/orders/{id}")
public Order getOrder(@PathVariable Long id) {
    // ...
}

示例代码

java 复制代码
@RestController
@RequestMapping("/api/orders")
public class OrderController {

    @GetMapping
    public List<Order> getAll() {
        // 获取所有订单
    }

    @GetMapping("/{id}")
    public Order getById(@PathVariable Long id) {
        // 获取特定ID的订单
    }

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public Order create(@RequestBody Order order) {
        // 创建新订单
    }

    @PutMapping("/{id}")
    public Order update(@PathVariable Long id, @RequestBody Order order) {
        // 更新订单
    }

    @DeleteMapping("/{id}")
    public void delete(@PathVariable Long id) {
        // 删除订单
    }
}
相关推荐
考虑考虑2 小时前
Mybatis实现批量插入
java·后端·mybatis
咖啡八杯3 小时前
GoF设计模式——中介者模式
java·后端·spring·设计模式
青石路7 小时前
记一次多JDK版本问题的排查,一坑套一坑,差点没爬上来
java
像我这样帅的人丶你还10 小时前
Java 后端详解(五):Redis 缓存
java·后端·全栈
plainGeekDev12 小时前
GreenDAO → Room
android·java·kotlin
亦暖筑序17 小时前
Java 8老系统AI Workflow实战:把一次性AI对话升级成可恢复工作流
java·后端
敲代码的彭于晏18 小时前
Bean 生命周期完全图解:前端同学也能看懂的 Spring 核心机制
java·前端·后端
plainGeekDev19 小时前
ButterKnife → ViewBinding
android·java·kotlin
像我这样帅的人丶你还1 天前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩1 天前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构