Зачем нужен @ResponseBody?

198
30 апреля 2019, 18:40

Зачем использовать в рест-контроллере @ResponseBody в ответе, если можно обойтись без него? Например

@RequestMapping(value = "/user/status", method = RequestMethod.POST)
public @ResponseBody String update(){
    return "hello";
}

возвращают одинаковый результат:

@RequestMapping(value = "/user/status", method = RequestMethod.POST)
public String update(){
    return "hello";
}
Answer 1

В случае со String разницы действительно нет (в вашем случае), потому что строка превращается в тело HTTP-ответа довольно очевидным образом.

Однако, в Spring MVC методы контроллера могут возвращать не только String, а много других интересных вещей. Аннотация @ResponseBody дает фреймворку понять, что объект, который вы вернули из метода надо прогнать через HttpMessageConverter, чтобы получить готовое к отправке на клиент представление.

PS. Кстати, обратите внимание, что аннотация относится не к объявлению типа возращаемого значения, а к объявлению метода целиком. Поэтому можно писать и так:

@RequestMapping(value = "/user/status", method = RequestMethod.POST)
@ResponseBody
public String update(){
    return "hello";
}
READ ALSO
Как сделать “отскакивание” в RecycleView вначале и в конце

Как сделать “отскакивание” в RecycleView вначале и в конце

Подскажите пожалуйста как сделать "отскакивание" в RecycleView вначале и в концеПример эффекта в GIF на первом фото

195
Как изменить диапазон углов свайпа

Как изменить диапазон углов свайпа

подскажите пожалуйста как изменить углы свайпов для горизонтального и вертикального? Вертикальный свайп надо сделать менее чувствительным...

177
Копии класса, их объявление Java

Копии класса, их объявление Java

Я новичок в java, пытаюсь сделать многопользовательскую игруСервер, клиент есть, проблема в другом

191