@RestControllerAdvice 增加拦截器
时间: 2023-11-23 08:55:05 浏览: 45
@RestControllerAdvice并不是增加拦截器,而是一个全局异常处理器和全局数据绑定器。它可以用于处理所有控制器中抛出的异常,并将数据绑定到所有控制器中的@ModelAttribute注释的方法的参数上。此外,@RestControllerAdvice还可以用于在响应中添加公共头信息或处理全局请求参数。
相关问题
不被@RestControllerAdvice拦截
在Spring框架中,`@RestControllerAdvice`注解通常用于全局异常处理。当一个异常被抛出时,`@RestControllerAdvice`注解修饰的类中的方法可以捕获并处理该异常。如果你不希望某个特定的方法被`@RestControllerAdvice`拦截,你可以通过以下方式进行处理:
1. 将该方法移动到一个不被`@RestControllerAdvice`注解修饰的类中。
2. 将该方法移动到一个不被`@ControllerAdvice`注解修饰的类中。
3. 使用`@ExceptionHandler`注解来处理该方法抛出的异常,而不是将其放在被`@RestControllerAdvice`注解修饰的类中。
请注意,以上方法中的第三种方法只适用于局部异常处理,无法全局控制。如果你需要在全局范围内控制某个方法不被`@RestControllerAdvice`拦截,建议使用前两种方式进行处理。
@RestControllerAdvice 详细
`@RestControllerAdvice` 是 Spring Framework 4.3 版本引入的一个注解,它可以用来定义一个全局的异常处理器。类似于 `@ControllerAdvice`,但是它的返回值会直接写入 HTTP 响应体中,而不是通过视图解析器来解析视图。
使用 `@RestControllerAdvice` 可以让 Spring Boot 应用在出现异常时返回 JSON 格式的数据,而不是 HTML 格式的错误页面,这对于前后端分离的项目非常有用。
具体使用方法:
1. 创建一个类并加上 `@RestControllerAdvice` 注解。
```java
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public Map<String, Object> handleException(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("code", "500");
result.put("msg", e.getMessage());
return result;
}
}
```
2. 在 `@ExceptionHandler` 注解中指定需要处理的异常类型,并在方法中编写异常处理逻辑。上面的代码中,我们处理了所有的异常,并将异常信息放入一个 Map 中返回。
如果需要处理多个异常类型,可以像下面这样编写:
```java
@ExceptionHandler({NullPointerException.class, ArithmeticException.class})
public Map<String, Object> handleException(Exception e) {
Map<String, Object> result = new HashMap<>();
result.put("code", "500");
result.put("msg", e.getMessage());
return result;
}
```
3. 在应用中发生异常时,`GlobalExceptionHandler` 类中对应的方法就会被调用,返回 JSON 格式的数据。
需要注意的是,`@RestControllerAdvice` 只能处理控制器抛出的异常,无法处理其他组件抛出的异常,比如过滤器、拦截器等。如果需要处理这些异常,可以使用 `@ExceptionHandler` 注解。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)