Ну, наведені вище відповіді є правильними у своєму контексті, і все-таки я даю вам практичний приклад.
У багатьох сценаріях як частина API нам потрібно надати кінцеві точки для пошуку сутності на основі певних критеріїв. Тепер, використовуючи JPA, вам не потрібно навіть писати запити, просто створіть інтерфейс та методи з конкретною номенклатурою Spring-JPA. Щоб виставити такі API, ви створите сервісний рівень, який просто викликає ці методи репозиторію і, нарешті, контролери, які виставлять кінцеві точки, викликаючи сервісний рівень.
Те, що тут зробив Spring, дозволяє вам виставити ці кінцеві точки з таких інтерфейсів (сховищ), які зазвичай є викликами GET для пошуку сутності, а у фоновому режимі генерує необхідні файли для створення кінцевих точок. Отже, якщо ви використовуєте @RepositoryRestResource, тоді немає необхідності робити шар Service / Controller.
З іншого боку, @RestController - це контролер, який спеціально має справу з json-даними, а інша робота в якості контролера. Коротше @Controller + @ResponseBody = @RestController.
Сподіваюся, це допомагає.
Дивіться мій робочий приклад і блог для того ж:
http://sv-technical.blogspot.com/2015/11/spring-boot-and-repositoryrestresource.html
https://github.com/svermaji/Spring-boot-with -hibernate-no-controller