Контроллер не зарегистрирован весной

Я пытаюсь добавить контроллер в стартовый проект Spring, но сопоставленный путь всегда возвращает ошибку 404.

Сначала я загрузил проект maven из https://start.spring.io/, затем создал каталог контроллеров и добавил HomeController.java в каталог src/main/java/com/example/controllers:

package com.example.controllers;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HomeController {
    @GetMapping("/test")
    public String test() {
        return "123";
    }
}

И я запускаю приложение spring-boot с помощью mvn spring-boot:run и тестирую /test с помощью curl:

%> curl http://127.0.0.1:8080/test
{"timestamp":"2022-04-07T02:00:37.745+00:00","status":404,"error":"Not Found","path":"/test"}

Что не так с контроллером?

Вы можете поделиться содержимым файла свойств приложения здесь? вы установили контекстный путь, если да, вам нужен URL-адрес, например путь/тест 127.0.0.1:8080/вашконтекст

swapyonubuntu 07.04.2022 04:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предлагаю вам сослаться на некоторые из этой ссылки https://spring.io/guides/gs/rest-service/

Вам нужно сообщить Spring, какие компоненты необходимо отсканировать и зарегистрировать. Так что добавьте @ComponentScan("com.example.controllers") к DemoApplication.

@ComponentScan("com.example.controllers")
@SpringBootApplication
public class DemoApplication {

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

}

Это сработало. Я действительно следил за этой статьей, и она не требует аннотации ComponentScan: spring.io/guides/gs/rest-service. Зачем мне добавлять аннотацию?

daisy 07.04.2022 05:55

@daisy Spring будет сканировать com.example.demo и его подпакеты, такие как com.example.demo.controller и com.example.demo.service, в соответствии с аннотацией @SpringBootApplication. Но ваш com.example.controllers не является подпакетом com.example.demo

xiaobo9 07.04.2022 06:02

Другие вопросы по теме