У меня есть несколько объектов JPA, каждая из которых управляется репозиториями Spring Rest Data, и я хочу перегрузить метод POST на одном из них, чтобы сделать один вызов сброса, а затем в остальном быть точно таким же.
Чего я не хочу делать, так это создания всех моих объектов и отношений с нуля, я просто хочу получить именно то, что Spring дала бы мне по умолчанию, если бы я не предоставил свой собственный метод.
Попытка 1:
Создайте контроллер, который выглядит так:
@RepositoryRestController
public class Entity0Controller {
@Autowired
Entity0DataRestRepository repo;
@PostMapping(path = "/entity0")
public Resource<Entity0> createEntity0(Entity0 e)
{
e.setName("I have been changed");
return new Resource<>(repo.save(e));
}
}
Ошибка, которую я возвращаю:
Circular view path [entity0]: would dispatch back to the current handler URL [/entity0] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
Попытка 2:
Измените функцию POST на:
@PostMapping(path = "/entity0")
public @ResponseBody Entity0 createEntity0(Entity0 e)
{
e.setName("I have been changed");
return repo.save(e);
}
Теперь я уклоняюсь от ошибки кругового пути обзора, но вообще не получаю никаких ссылок.
Я чувствую, что я близок, и если кто-то захочет взглянуть на MCVE / SSCCE (всего менее 20 строк кода), код здесь: https://github.com/soandos/spring-rest-override-example
@AlanHay, смогу ли я таким образом получить свойства HTTP-вызова? В частности, мне понадобится информация о сертификате пользователя (клиента).
Наверное. Вы можете попробовать стандартный Spring Interceptor, который хранит соответствующие данные в ThreadLocal для последующего использования. 1. stackoverflow.com/questions/46953039/… 2. stackoverflow.com/a/53399919/1356423




Вам действительно нужен собственный контроллер? Разве это нельзя сделать в обработчике событий? docs.spring.io/spring-data/rest/docs/current/reference/html/…