2016-12-09 8 views
1

Может ли кто-нибудь мне помочь.Весна данных отдыха. Как взять класс репозитория через запрос URI

У меня есть несколько сущностей и репозиториев внутри моего приложения, которое основано на сохранении данных весны. Прямо сейчас я написал свою собственную реализацию HandlerInterceptor, чтобы выполнить предварительную настройку каждого запроса, и я должен знать, какой репозиторий будет использовать для каждого HTTP-запроса.

Ofc Я могу сделать отдельный перехватчик для каждого репозитория, но это решение не является гибким. Все идеи?

Thx для продвижения

ответ

1

Хранилищ разрешаются весной данные-покой с помощью Repositories класса.

Класс репозиториев предоставляет вспомогательный метод (getRepositoryFor(Class<?>)) для нахождения репозитория для данного класса.

Вы можете использовать следующий фрагмент кода для поиска хранилища для данного класса в вашем перехватчика:

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

Более элегантное решение было бы воспользоваться встроенным пружинным данных, остальное хранилище поиска реализация с помощью настраиваемого контроллера (RootResourceInformationHandlerMethodArgumentResolver)

Для этого вам просто нужно добавить параметр RootResourceInformation в метод конечной точки репозиторияRestController.

 @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

Отличный ответ! Это позволило мне реализовать надлежащий метод контроллера для spring-security-acl в качестве под-ресурса. – mbonato