2014-07-04 8 views
9

nie wydaje się być w stanie przyporządkować mojego repozytorium w dowolnym miejscu innym niż następujące:Jak mogę odwzorować Spring Boot @RepositoryRestResource na określony adres URL?

@RepositoryRestResource(collectionResourceRel = "item", path = "item") 
public interface ItemRepository extends PagingAndSortingRepository<Item, Long> { 

myślałem mogę użyć:

path = "/some/other/path/item" 

ale odwzorowanie nie rozwiąże. I otrzymujemy:

HTTP ERROR 404 

Problem accessing /some/other/path/item. Reason: 

Not Found 

W wiosenno-javadoc danych path jest zdefiniowany jako: "The path segment under which this resource is to be exported."

Co robię źle?

+1

Pamiętasz, jeśli zapytam, co zrobiłeś? Znajduję się dokładnie w tej samej pozycji co ty. – Pytry

Odpowiedz

0

Myślę, że atrybut ścieżka służy do określenia ścieżki segment (więc bez ukośników). "/ Some/other/path" musi być ścieżką serwletu lub ścieżką kontekstu (tzn. Nie ma nic wspólnego z danymi Spring).

+0

Tak, ale nadal ... Jak mogę opublikować ten zasób w/some/other/path/item? Pomyślałem, że mogę to określić za pomocą zmiennej '' path'''. To ** jest ** Wiosenne dane, które je publikuje, czy nie powinno być konfigurowalne gdzie? – stratosgear

+0

Musisz to zrobić z programistami Spring Data. Został opublikowany jako zasób serwletu, więc możesz * zrobić * dowolną ścieżkę, zmieniając mapowania serwletów. Ale "/" jest specjalną postacią w URI, więc nie zdziwiłbym się, gdyby było to zabronione w atrybucie ścieżki adnotacji Spring Data. Dlaczego to ma znaczenie? –

9

Musisz przedłużyć RepositoryRestMvcConfiguration i zastąpić configureRepositoryRestConfiguration(RepositoryRestConfiguration config), aby ustawić swój baseUri. na przykład

@Configuration 
public class MyRepositoryRestMvcConfiguration extends RepositoryRestMvcConfiguration { 

    private static final String MY_BASE_URI_URI = "/my/base/uri"; 

    @Override 
    protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { 
     super.configureRepositoryRestConfiguration(config); 
     config.setBaseUri(URI.create(MY_BASE_URI_URI)); 
    } 
} 
+0

Nie można się oprzeć, by dodać moje "Dziękuję!". tutaj: zaoszczędziło to dużo drapania głowy i można by pomyśleć, że chłopaki z Spring dodaliby ten dokument do dokumentacji referencyjnej (lub Javadoc, a nawet kodu źródłowego ...) :) – Marco

6

Aby zmienić bazę URI, można też po prostu dodać do application.properties:

spring.data.rest.base-path=/my/base/uri 
4

Prawidłowe nieruchomość aplikacja jest następujący: spring.data.rest.base-path=/my/base/path(base-path zamiast base-uri)