2015-02-05 5 views
7

До сих пор я очень доволен проектом весеннего сапога, но я хотел бы углубить понимание того, как все склеено. Используя Spring-boot-starter-web, spring-boot-starter-data-jpa и hateoas, я смог собрать хороший рабочий сервер REST. Но мне интересно, как это делается, например, DataIntegrityViolation хорошо преобразуется в выход JSON, подобный этому. Мне действительно нравится информация, предоставляемая, но мне интересно, как я могу повторно использовать DataObject, преобразованный в JSON. Я просто не понимаю, откуда он и где он настроен. Надеюсь, вы, люди, можете мне помочь или указать на соответствующие части документации или даже на исходный код.Откуда возникает ответ на ошибку JSON по умолчанию в spring-boot-starter-web и как его настроить?

{ 
    "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" 
} 

Thx за вашу помощь, Marius

ответ

12

Выход создается Spring ботинка BasicErrorController. Он используется как резерв, когда ваше приложение не обработало исключение, используя Spring MVC (например, ExceptionHandler или ControllerAdvice) или страницу с ошибкой контейнера.

JSON создан путем внедрения ErrorAttributes. По умолчанию Spring Boot будет использовать DefaultErrorAttributes. Вы можете настроить это, создав свой собственный @Bean, который реализует ErrorAttributes.

Для получения дополнительной информации см. Документацию по весенней загрузке error handling section.

+0

Thx много Энди, это очень полезно :) –