Хранилищ разрешаются весной данные-покой с помощью 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....
}
Отличный ответ! Это позволило мне реализовать надлежащий метод контроллера для spring-security-acl в качестве под-ресурса. – mbonato