如何在Springboot中使用ResponseBodyAdvice <object>和Interceptor格式化异常输出?

时间:2019-03-13 11:19:17

标签: spring-boot spring-mvc interceptor spring-boot-maven-plugin

即使发生异常,我也将springboot应用程序的输出格式化为json。

格式如下:

{
"result": null,
"code": "-1",
"msg": "Exception happen"
}

仅使用ResponseBodyAdvice的代码是可以的,主要代码是:

@ResponseStatus(HttpStatus.OK)
@ExceptionHandler(Exception.class)
@ResponseBody
public <T> GlobalResponse<T> handleException(HttpServletRequest request, Exception e) {
    return GlobalResponse.fail("Exception happen");
}

但是当我添加类似下面的代码的Interceptor时,应用程序总是调用路径“ / error”,返回错误页面,而不是json数据。

@SpringBootConfiguration
public class InterceptorConfig extends WebMvcConfigurationSupport{

@Override
protected void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new TestInterceptor())
            .addPathPatterns("/**")
            .excludePathPatterns("/error");
    super.addInterceptors(registry);
}

TestInterceptor是令牌验证拦截器。

现在,我添加了一个控制器包含路径“ / error”来解决该问题,但是我想知道是否有更好,更自然的方法来解决这个问题。

0 个答案:

没有答案