java如何恢复Spring Boot 1.5中的默认异常映射?
我有一个spring boot Jersey应用程序,我已经将它从spring boot1.5.4
(平台:布鲁塞尔-SR3)升级到boot2.0.1
(平台:开罗发行版),这将Jersey版本从2.25.1
升级到了2.26
在升级之前,当应用程序抛出未经处理的错误时,应用程序将返回如下响应:
{
"timestamp": 1524060527236, "status": 500, "error": "Internal Server Error",
"exception": "java.lang.IllegalStateException", "message": "<example message>",
"path": "/ws/api/example/endpoint"
}
升级后,将返回相同的执行:
{
"timestamp": "2018-04-24T17:00:06.151+0000", "status": 500, "error": "Internal Server Error",
"message": "<example message>", "path": "/ws/api/example/endpoint"
}
我可以处理不同的时间戳格式,但是丢失exception类是一个问题
我曾尝试调试jersey的异常映射,但我不熟悉代码库,而且它似乎相当复杂。我找不到映射发生在哪里。我在文档或发行说明中也找不到任何关于更改异常映射的内容
基于以上和下面的评论,我认为变化是在Spring方面
那么,是什么改变了,我该如何恢复旧的行为
# 1 楼答案
此错误响应不是来自Jersey。它实际上是在将} ,使用constructor flag来创建它以包含异常
spring-boot-starter-web
模块包含到项目中时生成的。基于Andy Wilkinson's comment,我们可以通过创建ErrorAttributes
bean轻松覆盖JSON属性。要添加异常,我们只需返回一个^{我已经测试过了,它包括了预期的异常