Встречается на собеседованиях • сегодня

В чем разница между @Controller и @RestController в Spring

@Controller и @RestController — это аннотации Spring для обработки HTTP-запросов, но с ключевым отличием в возвращаемых данных.

@Controller:

  • Используется для традиционных MVC-приложений.
  • Возвращает имя представления (view), которое затем разрешается в HTML-страницу.
  • Для возврата JSON/XML нужно явно использовать @ResponseBody над методом.

Пример:

java
@Controller
public class MyController {
    @GetMapping("/greet")
    public String greet() {
        return "greet-page"; // имя view (например, greet-page.html)
    }
}

@RestController:

  • Комбинация @Controller + @ResponseBody на уровне класса.
  • Возвращаемые значения методов автоматически конвертируются в JSON/XML.
  • Используется для RESTful API.

Пример:

java
@RestController
public class MyApiController {
    @GetMapping("/api/greet")
    public String greet() {
        return "Hello, World!"; // возвращает JSON: "Hello, World!"
    }
}

Итог: @Controller — для веб-страниц, @RestController — для REST API.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы