Что делает аннотация @ResponseBody в Spring MVC?

«Что делает аннотация @ResponseBody в Spring MVC?» — вопрос из категории Spring, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аннотация @ResponseBody указывает, что возвращаемое значение метода-обработчика запроса должно быть напрямую записано в тело HTTP-ответа, а не интерпретировано как имя представления (view).

Как работает:

  • Spring использует HttpMessageConverter для преобразования возвращаемого объекта (например, DTO, String) в формат ответа (JSON, XML), основываясь на заголовке Accept запроса или конфигурации.
  • Часто используется в сочетании с @RequestMapping или @GetMapping в контроллерах.

Пример:

@Controller
public class MyController {
    @GetMapping("/user/{id}")
    @ResponseBody
    public User getUser(@PathVariable Long id) {
        return userService.findById(id); // Объект User будет автоматически преобразован в JSON
    }
}

Ключевой момент: @RestController является мета-аннотацией, которая включает @ResponseBody для всех методов класса.