Существует третий (и четвертый) вариант, который вы не описали, а именно использование @BasePathAwareController или @RepositoryRestController, в зависимости от того, выполняете ли вы действия, зависящие от сущности, или нет.
@RepositoryRestResource используется для установки параметров в интерфейсе общедоступного репозитория - он автоматически создает конечные точки в зависимости от типа расширяемого репозитория (например, CrudRepository / PagingAndSortingRepository / и т. Д.).
@BasePathAwareController и @RepositoryRestController используются, если вы хотите вручную создать конечные точки, но хотите использовать настроенные вами конфигурации Spring Data REST.
Если вы используете @RestController, вы создадите параллельный набор конечных точек с разными параметрами конфигурации - то есть с другим конвертером сообщений, разными обработчиками ошибок и т. Д. - но они будут счастливо сосуществовать (и, вероятно, вызовут путаницу).
Конкретную документацию можно найти здесь .