org.springframework.beans.factory.BeanCreationException проблема - PullRequest
1 голос
/ 16 июня 2020

Я изучаю весеннюю загрузку, и я создаю проект, который берет данные из JSON и помещает их в базу данных. При попытке создать методы GET у меня было это исключение:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'userController' method 

вот мой контроллер. Буду рад, если кто-то поможет .. Спасибо!

@Autowired
private UserService userService;

@GetMapping("/data")
public List<User> getUsers(){

    List<User> usersFinal = userService.getUsers();

    return usersFinal;
}



public String save50User(User user) {
    List<User> usersFinal = userService.getUsers();
    for(int i = 0;i<50;i++) {
        userService.saveUser(usersFinal.get(i));
    }

    return " the first 50 users saved";
}


@GetMapping("/user/{title}")
public List<User> showByTitle(@PathVariable String title) {
    List<User> s = userService.showByTitleLike(title);
    return s;
}


@GetMapping("/user/{id}")
public List<User> showByUserId(@PathVariable Integer id) {
    List<User> s =  userService.showByUserId(id);
    return s;
}


@GetMapping("/user/{id}")
public User showById(@PathVariable int id) {
    User s = userService.showById(id);
    return s;
}
@GetMapping("/user/{completed}")
public List<User> showCompletedTrue(@PathVariable boolean bool) {
    List<User> s = userService.showByCompleted(bool);
    return s;
}

1 Ответ

1 голос
/ 16 июня 2020

Извините, но все ваши конечные точки получения неоднозначны и имеют один и тот же шаблон, который не делает их разными.

означает

@GetMapping("/user/{title}")
@GetMapping("/user/{id}")
@GetMapping("/user/{completed}")

Если вы вызываете / user / xyz , он не распознает, какую конечную точку нужно вызвать и какой код нужно выполнить, потому что xyz может озаглавить, идентификатор или завершить

Поэтому, чтобы сделать его отличным, вы должны изменить шаблон URL-адреса, например

@GetMapping("/user/title/{title}")
@GetMapping("/user/id/{id}")
@GetMapping("/user/completed/{completed}")

, это сделает конечные точки разными, и ваш ожидаемый бизнес-лог c будет выполнен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...