在Spring 3.2中,新增了@ControllerAdvice、@RestControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping、@PostMapping、@GetMapping注解中。
@ControllerAdvice是@Controller的一个增强版,可以实现三个方面的功能:全局异常处理、全局数据绑定、全局数据预处理。
@ControllerAdvice 捕获异常后,如果需要页面跳转就不能加@ResponseBody,加了则该方法返回的是json数据。
@RestControllerAdvice注解的类,执行方法时是无法页面跳转的,等价于@ControllerAdvice+@ResponseBody,表示该方法返回json数据。
如果全部异常处理返回json,那么可以使用 @RestControllerAdvice 代替 @ControllerAdvice,这样在方法上就可以不需要添加 @ResponseBody。