SpringMVC所有注解按照使用位置划分
目录
1. 类级别注解
2. 方法级别注解
3. 参数级别注解
4. 字段/返回值注解
1. 类级别注解
作用范围:标记在类上,定义类的基本行为或全局配置。
注解 | 功能说明 |
---|---|
@Controller | 声明类为控制器,处理HTTP请求,通常配合视图解析器返回视图名称。 |
@RestController | @Controller + @ResponseBody ,用于REST API,直接返回数据(JSON/XML)。 |
@RequestMapping | 定义类的基础请求路径(如@RequestMapping("/api") ),方法级路径继承此路径。 |
@ControllerAdvice | 定义全局异常处理类,结合@ExceptionHandler 处理多个控制器的异常。 |
@RestControllerAdvice | @ControllerAdvice + @ResponseBody ,用于REST全局异常处理。 |
@CrossOrigin | 允许类中所有方法的跨域请求(可指定来源、方法、头信息等)。 |
@SessionAttributes | 声明类中需要跨请求共享的模型属性(如@SessionAttributes("user") )。 |
@EnableWebMvc | 启用Spring MVC的默认配置(如消息转换器、视图解析器),通常用在配置类。 |
@ComponentScan | 配置类上指定扫描的包路径,自动注册组件(如控制器、服务等)。 |
2. 方法级别注解
作用范围:标记在方法上,定义方法的行为或处理逻辑。
注解 | 功能说明 |
---|---|
@RequestMapping | 定义方法的请求路径和HTTP方法(如@RequestMapping(value="/test", method=RequestMethod.GET) )。 |
@GetMapping | 简化GET请求映射(等价于@RequestMapping(method=GET) )。 |
@PostMapping | 简化POST请求映射。 |
@PutMapping | 简化PUT请求映射。 |
@DeleteMapping | 简化DELETE请求映射。 |
@PatchMapping | 简化PATCH请求映射。 |
@ExceptionHandler | 在控制器或@ControllerAdvice 类中定义异常处理方法。 |
@ResponseBody | 方法返回值直接写入HTTP响应体(如返回JSON数据)。 |
@ResponseStatus | 指定HTTP响应状态码(如@ResponseStatus(HttpStatus.NOT_FOUND) )。 |
@ModelAttribute | 标记方法,在控制器方法执行前运行,向模型添加属性(如初始化表单对象)。 |
@InitBinder | 自定义数据绑定逻辑(如注册属性编辑器)。 |
@Async | 声明方法为异步执行(需配合@EnableAsync 启用)。 |
3. 参数级别注解
作用范围:标记在方法参数上,用于绑定请求数据。
注解 | 功能说明 |
---|---|
@RequestParam | 从请求参数中提取值(支持默认值和别名)。 |
@PathVariable | 从URL路径模板中提取变量(如/user/{id} 中的id )。 |
@RequestBody | 将请求体内容(如JSON)反序列化为Java对象。 |
@RequestHeader | 从请求头中提取值。 |
@CookieValue | 从Cookie中提取值。 |
@ModelAttribute | 将请求参数绑定到模型对象(常用于表单提交)。 |
@Valid / @Validated | 触发数据验证(如JSR 303校验)。 |
@SessionAttribute | 从会话中提取已存在的属性值(需配合@SessionAttributes 使用)。 |
4. 字段/返回值注解
作用范围:标记在字段或方法返回值上。
注解 | 功能说明 |
---|---|
@ResponseBody | 可标记方法,表示返回值直接写入响应体(与类级别@RestController 等价)。 |
@ResponseStatus | 也可标记异常类,指定抛该异常时的HTTP状态码。 |