2016-12-09 3 views
1

nehmen kann Kann mir bitte jemand helfen.Federdaten ruhen. Wie man Repository Klasse durch Anfrage URI

Ich habe ein paar Entitäten und Repositories in meiner App, die auf Federdaten ruht. Im Moment habe ich meine eigene HandlerInterceptor-Implementierung geschrieben, um jede Anfrage zu bearbeiten, und ich muss wissen, welches Repository für jede http-Anfrage verwendet wird.

Ofc Ich kann separate Interceptor für jedes Repository machen, aber diese Lösung ist nicht flexibel Irgendwelche Ideen?

Thx für Fortschritt

Antwort

1

Repositorys sind im Frühjahr Daten Rest mit der Repositories Klasse aufgelöst.

Die Klasse "Repositories" enthält eine Hilfsmethode (getRepositoryFor(Class<?>)) zum Suchen des Repositorys für eine bestimmte Klasse.

Sie können das folgende Snippet für ein Repository für eine bestimmte Klasse in Ihrem Interceptor finden:

Repositories repositories = new Repositories(appContext); 
repositories.getRepositoryFor(entityObject.getClass()); 

Eine elegantere Lösung wäre Vorteil des eingebauten Feder-data-Rest-Repository-Lookup zu nehmen Implementierung mit einem benutzerdefinierten Controller (RootResourceInformationHandlerMethodArgumentResolver)

Dazu müssen Sie nur einen RootResourceInformation-Parameter zu einer RepositoryRestController-Endpunktmethode hinzufügen.

 @RepositoryRestController 
     @RequestMapping("/customName") 
     public class RepositoryExportController { 

     @Autowired 
     private ApplicationContext appContext; 

     @RequestMapping(method = RequestMethod.GET, value = "{repository}", 
        produces = MediaTypes.HAL_JSON_VALUE) 
     @ResponseBody 
      public Resources<Resource<?>> export(RootResourceInformation resourceInformation, ...) { 

     Repositories repositories = new Repositories(appContext); 

     CrudRepository repo=(CrudRepository)repositories.getRepositoryFor(resourceInformation.getDomainType()); 

      repo.findAll(); 
     ...other logic.... 
    } 
+0

Große Antwort! Dies erlaubte mir, eine geeignete Controller-Methode für Spring-Security-acl als Sub-Ressource zu implementieren. – mbonato

Verwandte Themen