Ответ 1
Есть несколько вариантов, которые вы можете использовать. Весьма хороший способ - использовать исключения и класс для обработки под названием @ControllerAdvice
:
@ControllerAdvice
class GlobalControllerExceptionHandler {
@ResponseStatus(HttpStatus.CONFLICT) // 409
@ExceptionHandler(DataIntegrityViolationException.class)
public void handleConflict() {
// Nothing to do
}
}
Также вы можете передать HttpServletResponse
в метод контроллера и просто установить код ответа:
public RestModel create(@RequestBody String data, HttpServletResponse response) {
// code ommitted..
response.setStatus(HttpServletResponse.SC_ACCEPTED);
}
Для получения более подробной информации обратитесь к большому сообщению в блоге: http://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
Примечание: в Spring Загрузка с использованием аннотации @ResponseBody
избыточна - она включена в @RestController