SpringMVC 注解详解
1. 引言
SpringMVC 是 Spring 框架中的 Web 层解决方案,它通过注解的方式来简化 MVC 模式的实现。本篇将详细介绍 SpringMVC 中常用的注解及其用法。
2. SpringMVC 注解分类
SpringMVC 的注解主要分为以下几类:
2.1 核心注解
- @Controller:用于标识是一个控制器。
- @RestController:组合注解,等同于- @Controller+- @ResponseBody,用于标识 RESTful Web Services。
- @RequestMapping:用于将 HTTP 请求映射到对应的方法上。
2.2 数据绑定注解
- @RequestParam:用于将请求参数与控制器方法的参数进行绑定。
- @PathVariable:用于将 URI 模板变量与控制器方法的参数进行绑定。
- @RequestBody:用于读取 Http 请求的正文,将其绑定到相应的 bean 上。
- @ResponseBody:表示该方法的返回结果直接作为 Web 响应正文返回,用于异步请求处理。
2.3 其他注解
- @ModelAttribute:用于将请求参数与模型对象进行绑定。
- @CookieValue:用于将 Cookie 与控制器方法的参数进行绑定。
- @RequestHeader:用于将 Http 请求头与控制器方法的参数进行绑定。
3. 核心注解详解
3.1 @Controller
 
@Controller 注解是 SpringMVC 中最基本的注解之一,它用于声明一个类为 SpringMVC 控制器,通常包含处理请求的方法。
@Controller
public class MyController {// ...
}
3.2 @RestController
 
@RestController 是 @Controller 和 @ResponseBody 的组合,用于创建 RESTful Web Services。
@RestController
public class MyRestController {// ...
}
3.3 @RequestMapping
 
@RequestMapping 用于将 URL 路径与控制器中的方法进行映射。
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String sayHello() {return "Hello, World!";
}
4. 数据绑定注解详解
4.1 @RequestParam
 
@RequestParam 用于将请求参数与控制器方法的参数进行绑定。
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@RequestParam("id") int id) {// ...
}
4.2 @PathVariable
 
@PathVariable 用于将 URI 模板变量与控制器方法的参数进行绑定。
@RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public String getUserById(@PathVariable int id) {// ...
}
4.3 @RequestBody
 
@RequestBody 用于读取 Http 请求的正文,将其绑定到相应的 bean 上。
@PostMapping("/user")
public UserResponse createUser(@RequestBody UserRequest userRequest) {// ...
}
4.4 @ResponseBody
 
@ResponseBody 表示该方法的返回结果直接作为 Web 响应正文返回。
@Controller
public class MyController {@ResponseBody@RequestMapping(value = "/hello", method = RequestMethod.GET)public String sayHello() {return "Hello, World!";}
}
5. 其他注解详解
5.1 @ModelAttribute
 
@ModelAttribute 用于将请求参数与模型对象进行绑定。
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@ModelAttribute("data") MyData data) {// ...
}
5.2 @CookieValue
 
@CookieValue 用于将 Cookie 与控制器方法的参数进行绑定。
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@CookieValue("JSESSIONID") String cookie) {// ...
}
5.3 @RequestHeader
 
@RequestHeader 用于将 Http 请求头与控制器方法的参数进行绑定。
@RequestMapping(value = "/user", method = RequestMethod.GET)
public String getUser(@RequestHeader("Authorization") String authorization) {// ...
}
SpringMVC 的注解极大地简化了 Web 应用程序的开发过程,通过上述注解的灵活使用,开发者可以快速构建出功能强大且易于维护的 Web 应用。理解并掌握这些注解对于使用 SpringMVC 至关重要。