您的位置:首页 > 编程语言 > Java开发

有关SpringMVC全局异常处理器

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

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

代码如下:

@Component
public class IHandlerExceptionResolver extends ExceptionHandlerExceptionResolver {

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


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

@Controller
@ControllerAdvice
public class ExHandler {

@ExceptionHandler(Exception.class)
@ResponseBody
public ApiResult doEx(Exception ex){
return new ApiResult(500,ex.getMessage(),null);
}

}

// 基于java代码的配置,添加自定义异常处理器
@Configuration
@EnableWebMvc
public class MvcConfig extends WebMvcConfigurerAdapter implements ApplicationContextAware {

private ApplicationContext applicationContext;
@Autowired
private IHandlerExceptionResolver exceptionResolver;
@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> exceptionResolvers) {
super.configureHandlerExceptionResolvers(exceptionResolvers);
exceptionResolvers.add(exceptionResolver);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: