首先@ControllerAdvice注解在类上,是一个增强的 Controller。有三个基本功能:
- 全局异常处理
- 全局数据绑定
- 全局数据预处理
可以通过@ExceptionHandler(value = Exception.class)注解到@ControllerAdvice注解的类方法上监控异常并进行处理;
可以通过@ModelAttribute注解把值绑定到Model中,使得全局@RequestMapping可以获取到该值;
可以通过@InitBinder注解对@RequestMapping注解接收到的前端参数进行处理,@InitBinder注解方法的参数为WebDataBinder binder;
启动应用后,被 @ExceptionHandler、@InitBinder、@ModelAttribute 注解的方法,都会作用在 被 @RequestMapping 注解的方法上。
全局参数案例:
@ModelAttribute:在Model上设置的值,对于所有被 @RequestMapping 注解的方法中,都可以通过 ModelMap 获取,controller接收前端值的时候可以接收@ModelAttribute设定的modelMap,如下:
数据预处理案例:
异常绑定案例: