不用@ControllerAdvice注解怎么实现全局异常处理
时间: 2023-07-20 17:39:38 浏览: 49
如果不想使用@ControllerAdvice注解,我们也可以通过实现HandlerExceptionResolver接口来实现全局异常处理。具体步骤如下:
1. 创建一个类,实现HandlerExceptionResolver接口。
2. 在类中实现resolveException方法,该方法会在全局异常发生时被执行。
3. 在resolveException方法中,我们可以根据不同的异常类型进行不同的处理,比如返回自定义错误信息或者跳转到指定页面。
4. 最后,我们需要将该类注册到Spring框架中,可以通过在配置文件中进行配置或者使用注解的方式进行注册。
以下是一个简单的示例:
```java
public class GlobalExceptionHandler implements HandlerExceptionResolver {
@Override
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
// 返回自定义错误信息
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMsg", "系统错误,请稍后重试!");
modelAndView.setViewName("error");
return modelAndView;
}
}
```
在上述代码中,我们实现了HandlerExceptionResolver接口并重写了resolveException方法。在该方法中,我们将错误信息存入ModelAndView中,并将viewName设置为"error",表示跳转到error页面显示错误信息。
最后,我们需要将该类注册到Spring框架中。可以通过在配置文件中进行配置或者使用注解的方式进行注册。例如,在Spring配置文件中添加如下配置:
```xml
<bean id="globalExceptionHandler" class="com.example.GlobalExceptionHandler"/>
```
在上述配置中,我们将GlobalExceptionHandler类注册为Spring的一个bean,并使用该类处理全局异常。