我最近将我们的项目升级到了Spring Boot2。该应用程序只是一个Rest API。现在,我们所有的400和500响应都将以html而不是json的形式返回。
我正在定义一个自定义的ErrorAttributes,就像文档所说的那样。
@Configuration
public class WebConfig implements WebMvcConfigurer {
...
@Bean
public ErrorAttributes errorAttributes() {
return new DefaultErrorAttributes() {
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest,
boolean includeStackTrace) {
Map<String, Object> errorAttributes = super.getErrorAttributes(webRequest, true);
return errorAttributes;
}
};
}
...
我想在本地调试此问题,但我无法在代码中找到Spring Boot做出此决定添加JSON响应错误的决定。这里的文档:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-error-handling说:
对于计算机客户端,它会生成JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。
我想我必须在本地定义一个Bean,这导致无法在Spring Boot Auto配置中正确配置它。
答案 0 :(得分:0)
我终于想通了。我认为Spring Security 4对Spring Security 5进行了一些更改,这在我们的应用程序的筛选链中引起了NPE。另外,调试问题的难度更大,因为在Spring Boot升级中,/ error路由被强制进行身份验证。
我最终修复了NPE,使每个人都可以看到/ error映射,然后确保ErrorMvcAutoConfiguration被正确初始化。现在一切正常。