SpringMVC常用注解

  • @Controller
  • @RequestMapping
  • @RequestParam
  • @RequestBody
  • @ResponseBody
  • @ComponentScan
  • @DateTimeFormat
  • @PathVariable
  • @RestController
  • @GetMapping @PostMapping @PutMapping @DeleteMapping
  • @RestControllerAdvice、@ExceptionHandler


@Controller

名称

@Controller

类型

类注解

位置

SpringMVC控制器类定义上方

作用

设定SpringMVC的核心控制器bean

@RequestMapping

名称

@RequestMapping

类型

类注解或方法注解

位置

SpringMVC控制器类或方法定义上方

作用

设置当前控制器方法请求访问路径

相关属性

value(默认),请求访问路径

@RequestParam

名称

@RequestParam

类型

形参注解

位置

SpringMVC控制器方法形参定义前面

作用

绑定请求参数与处理器方法形参间的关系

相关参数

required:是否为必传参数

defaultValue:参数默认值

@RequestBody

名称

@RequestBody

类型

形参注解

位置

SpringMVC控制器方法形参定义前面

作用

将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

  • 区别
  • @RequestParam用于接收url地址传参,表单传参【application/x-www-form-urlencoded】
  • @RequestBody用于接收json数据【application/json】
  • 应用
  • 后期开发中,发送json格式数据为主,@RequestBody应用较广
  • 如果发送非json格式数据,选用@RequestParam接收请求参数

@ResponseBody

名称

@ResponseBody

类型

方法\类注解

位置

SpringMVC控制器方法定义上方和控制类上

作用

设置当前控制器返回值作为响应体,

写在类上,该类的所有方法都有该注解功能

说明:

  • 该注解可以写在类上或者方法上
  • 写在类上就是该类下的所有方法都有@ReponseBody功能
  • 当方法上有@ReponseBody注解后
  • 方法的返回值为字符串,会将其作为文本内容直接响应给前端
  • 方法的返回值为对象,会将对象转换成JSON响应给前端

此处又使用到了类型转换,内部还是通过Converter接口的实现类完成的,所以Converter除了前面所说的功能外,它还可以实现:

  • 对象转Json数据(POJO -> json)
  • 集合转Json数据(Collection -> json)

@ComponentScan

名称

@ComponentScan

类型

类注解

位置

类定义上方

作用

设置spring配置类扫描路径,用于加载使用注解格式定义的bean

相关属性

excludeFilters:排除扫描路径中加载的bean,需要指定类别(type)和具体项(classes)

includeFilters:加载指定的bean,需要指定类别(type)和具体项(classes)

@DateTimeFormat

名称

@DateTimeFormat

类型

形参注解

位置

SpringMVC控制器方法形参前面

作用

设定日期时间型数据格式

相关属性

pattern:指定日期时间格式字符串

@PathVariable

名称

@PathVariable

类型

形参注解

位置

SpringMVC控制器方法形参定义前面

作用

绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

对比三个注解@RequestBody@RequestParam@PathVariable,这三个注解之间的区别和应用分别是什么?

  • 区别
  • @RequestParam用于接收url地址传参或表单传参
  • @RequestBody用于接收json数据
  • @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
  • 应用
  • 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广
  • 如果发送非json格式数据,选用@RequestParam接收请求参数
  • 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值

@RestController

名称

@RestController

类型

类注解

位置

基于SpringMVC的RESTful开发控制器类定义上方

作用

设置当前控制器类为RESTful风格,

等同于@Controller与@ResponseBody两个注解组合功能

@GetMapping @PostMapping @PutMapping @DeleteMapping

按照不同的请求方式代表不同的操作类型。

  1. 发送GET请求是用来做查询
  2. 发送POST请求是用来做新增
  3. 发送PUT请求是用来做修改
  4. 发送DELETE请求是用来做删除

名称

@GetMapping @PostMapping @PutMapping @DeleteMapping

类型

方法注解

位置

基于SpringMVC的RESTful开发控制器方法定义上方

作用

设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,

例如@GetMapping对应GET请求

相关属性

value(默认):请求访问路径

@RestControllerAdvice、@ExceptionHandler

参考文章:SpringMVC:统一异常处理(11)

名称

@RestControllerAdvice

类型

类注解

位置

Rest风格开发的控制器增强类定义上方

作用

为Rest风格开发的控制器类做增强

名称

@ExceptionHandler

类型

方法注解

位置

专用于异常处理的控制器方法上方

作用

设置指定异常的处理方案,功能等同于控制器方法,

出现异常后终止原始控制器执行,并转入当前方法执行