У меня есть интерфейс UserController и класс UserControllerImpl. Когда я добавляю @RequestMapping и @PathVariable в UserControllerImpl и использую прокси на основе класса, я могу получить пользователя, используя этот URL:
ПОЛУЧИТЬ: http://локальный:8080/компания-контроль/пользователи/25
Когда я меняю прокси на основе интерфейса и добавляю @RequestMapping и @PatyVariable к интерфейсу, я не могу его получить и получаю следующую ошибку:
Request processing failed; nested exception is java.lang.IllegalArgumentException: Name for argument type [int] not available, and parameter name information not found in class file either.
Я могу решить эту проблему, добавив «userId» в @PathVariable.
@GetMapping("/{userId}")
public User getUser(@PathVariable("userId") int userId);
Может ли кто-нибудь объяснить мне, почему я должен добавить «userId» в @PathVariable, если я использую то же имя переменной? Это связано с прокси?




Возможно, потому, что когда кто-то реализует интерфейс, он может использовать любые имена параметров, которые он хочет (они не должны соответствовать определению интерфейса).