Spring boot 2: не удается получить доступ к методу контроллера - PullRequest
0 голосов
/ 02 июня 2019

У меня есть учебник по весенней загрузке. Мне не удается получить доступ к методу контроллера, когда я звоню:

http://localhost:8090/customers/stam

Tomcat log:

o.s.b.w.embedded.tomcat.TomcatWebServer: Tomcat запущен на портах: 8090 (http) с контекстным путем ''

t.s.SpringbootRestDemoApplication: запуск SpringbootRestDemoApplication через 2,696 секунд (JVM работает для 4,042)

Ответ, который я получаю:

{
    "timestamp": "2019-06-02T12:25:03.400+0000",
    "status": 404,
    "error": "Not Found",
    "message": "No message available",
    "path": "/customers/stam"
}

Можете ли вы помочь?

enter image description here

package ttt.springboot_rest_demo;
import ...

@SpringBootApplication
@ComponentScan({"springboot_rest_demo.controller", "springboot_rest_demo.data"})
public class SpringbootRestDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootRestDemoApplication.class, args);
    }

}

package ttt.springboot_rest_demo.controller;    

import ...

@RestController
@RequestMapping("/customers")
public class CustomerController {

    @RequestMapping(value = "/stam", method = RequestMethod.GET)
    public ResponseEntity < Customer > getCustomer() {
        return new ResponseEntity < >(new Customer(), HttpStatus.OK);
    }
}

package ttt.springboot_rest_demo.data;

public class Customer {

    private String name;
    private int age;
    private String email;
    private Long id;

    //getters and setters
}

Это только часть проекта. Я также использую класс обслуживания, но, поскольку я потерпел неудачу, я добавил простой метод контроллера, который пока не нуждается в классе обслуживания, просто для упрощения примера.

1 Ответ

2 голосов
/ 02 июня 2019

Ваш ComponentScan неверен, пожалуйста, проверьте пакеты (эти имена пакетов не существуют):

@ComponentScan({"springboot_rest_demo.controller", "springboot_rest_demo.data"})

Ваш контроллер находится в ttt.springboot_rest_demo.controller упаковке. Измените имя пакета в ComponentScan на этот пакет.

@ComponentScan({"ttt.springboot_rest_demo.controller", "springboot_rest_demo.data"})

В качестве альтернативы простое исключение ComponentScan также будет работать для вас, потому что тогда вы будете полагаться на поведение Spring Boot по умолчанию для сканирования всех пакетов в SpringBootApplication.

Обратите внимание, что если ваш контроллер не является управляемым компонентом (например, не сканируется с помощью ComponentScan), любая добавляемая вами аннотация Spring (например, RequestMapping, RestController) игнорируется.

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