有关SpringMVC全局异常处理器

来源:互联网 发布:淘宝饰品店铺横幅 编辑:程序博客网 时间:2024/06/07 01:36

关于springmvc的全局异常处理器,很多人都会想到@ExceptionHandler,但是如果项目既有@ResponBody返回json,还有返回xml的时候,默认ExceptionHandler返回的就是xml格式的响应;

为了解决这个问题,我们自定义一个类,继承ExceptionHandlerExceptionResolver 重写 afterPropertiesSet 方法,在这个方法中 加入可以返回json格式的消息转换器,比如MappingJackson2HttpMessageConverter;

代码如下:

@Componentpublic class IHandlerExceptionResolver extends ExceptionHandlerExceptionResolver {  @Override  public void afterPropertiesSet() {    List messageConverters=getMessageConverters();    messageConverters.add(new MappingJackson2HttpMessageConverter());    setMessageConverters(messageConverters);    setOrder(2);    super.afterPropertiesSet();  }}

在上述代码的基础上,就可以正常使用(指返回json格式的数据)下面全局异常处理器:

@Controller@ControllerAdvicepublic class ExHandler {    @ExceptionHandler(Exception.class)    @ResponseBody    public ApiResult doEx(Exception ex){        return new ApiResult(500,ex.getMessage(),null);    }}
// 基于java代码的配置,添加自定义异常处理器@Configuration@EnableWebMvcpublic class MvcConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {  private ApplicationContext applicationContext;  @Autowired  private IHandlerExceptionResolver exceptionResolver;
@Overridepublic void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {  super.configureHandlerExceptionResolvers(exceptionResolvers);  exceptionResolvers.add(exceptionResolver);}

0 0
原创粉丝点击