Spring MVC 核心注解全解析
Spring MVC框架提供了一系列强大的注解,极大简化了Web应用的开发。下面将详细介绍这些核心注解的功能与用法。
核心注解详解
@Controller
标记一个类为控制器组件,Spring MVC会自动扫描并管理带有此注解的类。
@RequestMapping
用于映射HTTP请求到特定的处理方法。可应用于类级别或方法级别,可指定HTTP方法、请求参数等条件。
@RequestParam
标注方法参数,表示从请求参数中获取值。主要用于处理application/x-www-form-urlencoded格式的数据。
@RequestBody
标注方法参数,指示Spring MVC从请求体中读取数据并绑定到参数对象。适用于接收JSON、XML等格式的非表单数据。
@ResponseBody
标注方法或返回类型,表明方法返回值应直接写入HTTP响应体,而非进行视图解析。常用于RESTful API返回JSON/XML数据。
@RestController
结合了@Controller和@ResponseBody的功能,标记的类中所有方法返回值都将直接写入响应体。
@PathVariable
从URL路径模板中提取变量值并绑定到方法参数,支持RESTful风格URL。
@RequestHeader
将HTTP请求头中的值绑定到方法参数。
@CookieValue
将HTTP请求中的Cookie值绑定到方法参数。
HTTP方法特定注解
Spring 4.3+引入了@GetMapping、@PostMapping、@PutMapping、@DeleteMapping等注解,它们是对@RequestMapping的语义化封装,使代码更具可读性。
实践示例
java
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
@Controller
@RequestMapping(“/api”)
public class ApiController {
/**
* RESTful风格GET请求示例
*/
@GetMapping("/users/{id}")
@ResponseBody
public User getUserById(@PathVariable("id") Long userId) {
return userService.findUserById(userId);
}
/**
* POST请求接收JSON数据示例
*/
@PostMapping("/users")
@ResponseBody
public ApiResponse createUser(@RequestBody User user) {
userService.saveUser(user);
return ApiResponse.success("创建成功");
}
/**
* 获取请求头信息示例
*/
@GetMapping("/info")
@ResponseBody
public String getRequestInfo(@RequestHeader("User-Agent") String userAgent) {
return "客户端信息:" + userAgent;
}
}
