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) {
        // 删除订单
    }
}
相关推荐
raining_peidx几秒前
xxljob源码
java·开发语言
肥猪猪爸1 分钟前
双重检查锁(DCL)与 volatile 的关键作用
java·开发语言·单例模式
yaoxin52112310 分钟前
289. Java Stream API - 从字符串的字符创建 Stream
java·开发语言
浮游本尊17 分钟前
Java学习第35天 - 分布式系统深入与大数据处理
java
癫狂的兔子17 分钟前
【Python】【Flask】抽奖功能
开发语言·python·flask
你怎么知道我是队长19 分钟前
C语言---无名位域
c语言·开发语言
2301_7806698627 分钟前
Set集合、HashSet集合的底层原理
java
带土134 分钟前
6. C++智能指针(1)
开发语言·c++
你曾经是少年38 分钟前
Java 关键字
java
海南java第二人41 分钟前
SpringBoot启动流程深度解析:从入口到容器就绪的完整机制
java·开发语言