内容
隐藏
配置类
@EnableWebMvc
开启对 Spring MVC 注解的解析
Controller
类
@Controller
标注为 Controller,Spring 提供的。
在Spring MVC中使用会用于找到并解析 Controller 的请求方法
@RestController
@Controller + @ResponseBody 是复合注解,是在sprnig4.0后新加入的一个注解,同样用于标注为控制器的组件,如果当前Controller中所有请求方法都需要使用@ResponseBody注解来响应,那么就可以使用它标注在类上,而不需要在每一个方法上标注@ResponseBody
用途
需要返回 vo 对象或者 实体对象时
缺点
会优先对Controller中所有方法的返回值进行序列化,导致转发和重定向失效,因为Spring MVC无法解析到返回值中的用于标注转发和重定向的字符串
@ResponseBody
在类上标注,会对所有方法的返回值进行序列化,也可以在方法上标注
方法
@RequestMapping
将请求映射到方法上
value:格式"/请求"
method:指定请求类型(比如RequestMethod.GET)
@GetMapping 和 @PostMapping
将请求映射到方法上,继承 @RequestMapping
,同时指定类请求类型,比如如下
value:格式"/请求"
@InitBinder
标注格式化器
日期格式化器
@InitBinder
public void regFormatter(WebDataBinder binder) {
binder.addCustomFormatter(
new DateFormatter("yyyy-MM-dd"));
}
@ExceptionHandler
用于处理Controller局部异常处理
value:处理异常的类型
/**
* 局部异常处理(处理非业务异常,如数据库异常等)
* @param e
* @return
*/
@ExceptionHandler(RuntimeException.class)
public ResultVO handleRuntimeException(RuntimeException e) {
//记录异常日志
log.error(e.getMessage());
//再将异常转换为提示信息
ResultVO vo = new ResultVO();
vo.setCode(HttpStatus.INTERNAL_SERVER_ERROR.value());
vo.setMessage("服务器内部错误,请稍后尝试");
return vo;
}
属性
@RequiredArgsConstructor
不是 Spring MVC 提供的注解,是lombok提供的。
会根据private final
的属性生成包含这些属性的构造方法,用于Service实现类的注入
全局异常处理类(类似于切面)
这个类中定义所有的异常处理方法,也可以理解为全局异常通知
异常处理的优先级是:小(具体) -> 大(Exception)
类
@RestControllerAdvice
标注为一个全局异常处理类
value:根据包名找到 Controller类 对其进行异常捕获
方法
@ExceptionHandler
用于标注为全局异常处理方法
value:处理异常的类型