@ControllerAdvice
时间: 2023-07-11 09:46:18 浏览: 89
SpringMVC @ControllerAdvice使用场景
5星 · 资源好评率100%
@ControllerAdvice 是 Spring 框架中的一个注解,用于定义全局控制器增强器。它可以用来实现全局异常处理、全局数据绑定、全局数据预处理等功能。
@ControllerAdvice 注解的作用是将一个类定义为全局控制器增强器,该类中的方法将会应用到所有的 @RequestMapping 注解的方法上。它可以拦截所有 Controller 中抛出的异常,并进行统一的处理。
该注解通常与 @ExceptionHandler、@InitBinder 和 @ModelAttribute 注解一起使用,用于定义全局异常处理、全局数据绑定和全局数据预处理等功能。
以下是一个简单的 @ControllerAdvice 的示例:
```java
@ControllerAdvice
public class GlobalControllerAdvice {
@ExceptionHandler(Exception.class)
public ResponseEntity<String> handleException(Exception e) {
return new ResponseEntity<>("Error: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
@ModelAttribute
public void addAttributes(Model model) {
model.addAttribute("app", "My Application");
}
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
}
}
```
在上面的代码中,我们使用 @ControllerAdvice 注解将该类标记为全局控制器增强器。然后,我们使用 @ExceptionHandler 注解定义了一个 handleException 方法来处理所有的异常,该方法返回一个 ResponseEntity 对象。接着,我们使用 @ModelAttribute 注解定义了一个 addAttributes 方法来添加全局数据。最后,我们使用 @InitBinder 注解定义了一个 initBinder 方法来定义全局数据预处理。
使用上面的代码,我们就可以在 Spring Boot 应用中实现全局控制器增强器了。所有的 Controller 都将会受到该增强器的影响,从而实现了全局异常处理、全局数据绑定和全局数据预处理等功能。
阅读全文