Cóż, powyższe odpowiedzi są poprawne w ich kontekście, ale daję ci praktyczny przykład.
W wielu scenariuszach w ramach API musimy zapewnić punkty końcowe do wyszukiwania encji na podstawie określonych kryteriów. Teraz używając JPA nie musisz nawet pisać zapytań, po prostu stwórz interfejs i metody z określoną nomenklaturą Spring-JPA. Aby udostępnić takie interfejsy API, utworzysz warstwę usług, która po prostu wywoła te metody repozytorium, a na końcu kontrolery, które ujawnią punkty końcowe, wywołując warstwę usług.
To, co zrobiła tutaj Spring, pozwoliło na ujawnienie tych punktów końcowych z takich interfejsów (repozytoriów), które są zwykle wywołaniami GET do wyszukiwania encji, aw tle generuje pliki niezbędne do utworzenia końcowych punktów końcowych. Więc jeśli używasz @RepositoryRestResource, nie ma potrzeby tworzenia warstwy usługi / kontrolera.
Z drugiej strony @RestController to kontroler, który zajmuje się konkretnie danymi json i resztą działa jako kontroler. W skrócie @Controller + @ResponseBody = @RestController.
Mam nadzieję że to pomoże.
Zobacz mój przykład roboczy i blog dla tego samego:
http://sv-technical.blogspot.com/2015/11/spring-boot-and-repositoryrestresource.html
https://github.com/svermaji/Spring-boot-with -hibernate-no-controller