到目前为止,我对春季启动项目感到非常满意,但我想更深入地了解一切如何融合在一起。使用spring-boot-starter-web,spring-boot-starter-data-jpa和hateoas,我能够组装一个漂亮的REST后端。但我想知道它是如何完成的,例如DataIntegrityViolation很好地转换为像这样的JSON输出。我实际上喜欢提供的信息,但我想知道,我如何重用DataObject转换为JSON。我只是不明白,它来自哪里以及配置的位置。希望大家能帮助我或指出文档的相关部分甚至源代码。
{
"readyState": 4,
"responseText": "{\"timestamp\":1423155860435,\"status\":500,\"error\":\"Internal Server Error\",\"exception\":\"org.springframework.dao.InvalidDataAccessResourceUsageException\",\"message\":\"could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet\",\"path\":\"/api/catalog/colorfamilies\"}",
"responseJSON": {
"timestamp": 1423155860435,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.dao.InvalidDataAccessResourceUsageException",
"message": "could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet",
"path": "/api/catalog/colorfamilies"
},
"status": 500,
"statusText": "Internal Server Error"
}
谢谢你的帮助, 的Marius
答案 0 :(得分:15)
输出由Spring Boot的BasicErrorController
创建。当您的应用程序未使用Spring MVC(例如ExceptionHandler
或ControllerAdvice
)或容器错误页面处理异常时,它将用作后备。
JSON由ErrorAttributes
的实现创建。默认情况下,Spring Boot将使用DefaultErrorAttributes
。您可以通过创建自己的@Bean
来实现ErrorAttributes
。
有关详细信息,请参阅Spring Boot文档的error handling section。