C'è una terza (e quarta) opzione che non hai delineato, che consiste nell'usare @BasePathAwareController o @RepositoryRestController, a seconda che tu stia eseguendo azioni specifiche dell'entità o meno.
@RepositoryRestResource viene utilizzato per impostare le opzioni sull'interfaccia pubblica del repository: creerà automaticamente gli endpoint in base al tipo di repository che viene esteso (ad esempio CrudRepository / PagingAndSortingRepository / ecc.).
@BasePathAwareController e @RepositoryRestController vengono utilizzati quando si desidera creare manualmente endpoint, ma si desidera utilizzare le configurazioni REST di Spring Data che sono state impostate.
Se usi @RestController, creerai un insieme parallelo di endpoint con diverse opzioni di configurazione - cioè un diverso convertitore di messaggi, diversi gestori di errori, ecc - ma coesisteranno felicemente (e probabilmente causeranno confusione).
La documentazione specifica può essere trovata qui .