Spring3.2开始提供的新注解,控制器增强(AOP),最主要的应用是做统一的异常处理。@ControllerAdvice(看成spring mvc提供的一个特殊的拦截器)。
@ControllerAdvice是一个@Component,用于定义@ExceptionHandler(最主要用途),@InitBinder和@ModelAttribute方法,适用于所有使用@RequestMapping方法(拦截)。
引申:@interface 元注解
@Target(ElementType.TYPE) :该注解应用到什么地方。
@Retention(RetentionPolicy.RUNTIME):什么时候应用。
@ExceptionHandler:为所有controller封装统一异常处理代码。
@ModelAttribute:为所有controller设置全局变量。
@InitBinder:用于为所有controller设置某个类型的数据转换器。
准备:搭建好Spring Boot,页面使用thymeleaf
1.全局异常捕捉处理
ControllerAdviceTest.java
/**
* 启动应用后,被 @ExceptionHandler、@InitBinder、@ModelAttribute 注解的方法,
* 都会作用在 被 @RequestMapping 注解的方法上
*/
@ControllerAdvice
public class ControllerAdviceTest {
/**
* 全局异常捕捉处理
* @ExceptionHandler 用来定义函数针对的异常类型
* @param ex
* @return
*/
@ResponseBody
@ExceptionHandler(value = Exception.class)
public Map errorHandler(Exception ex){
Map map = new HashMap();
map.put("code","0000");
map.put("msg",ex.getMessage());
return map;
}
}
ExceptionController.java
@RestController
public class ExceptionController {
&#