Приложение Spring Framework возвращает только ошибки 404

Имейте очень простой класс:

@RestController
public class LoggingController {
    @GetMapping("/test")
    public ResponseEntity<String> test() {
        return new ResponseEntity<>("Hello", HttpStatus.OK);
    }
}

Когда я захожу в браузер, он выдает ошибку 404. Я добавил регистратор, который подтверждает отправку запросов. Не знаю, почему не вызывается соответствующий обработчик.

Incoming request to /test with method GET

Есть идеи?

добавьте @RequestMapping("")

Nguyen Manh Cuong 29.08.2024 05:49

Те же результаты, что и у @RequestMapping("/"), который представляет собой ответ 404.

Gunslinger 29.08.2024 05:57

Есть ли @RequestMapping в другом контроллере? Можете ли вы предоставить то, что вы пытаетесь отправить, например, снимок почтальона или веб-браузера?

Nguyen Manh Cuong 29.08.2024 06:03

Можете ли вы предоставить минимально воспроизводимый пример ? Можете ли вы воспроизвести это в новом проекте?

Unmitigated 29.08.2024 06:34

Просто догадайтесь, пожалуйста, проверьте конфигурацию контекстного пути один раз в свойствах приложения для запускаемого профиля и отправляется ли он. Кроме того, находится ли ваше основное приложение и этот контроллер в одном базовом пакете? Просто чтобы убедиться, что сканирование компонентов работает правильно, иначе вам необходимо явно определить то же самое.

promitamaitra 29.08.2024 09:13

Пожалуйста, поделитесь: 1. Какие зависимости у вас есть в вашем pom.xml или build.gradle? 2. Какова структура вашего проекта? Это загрузочный проект Spring или обычный проект Spring?

Yurii Vlasiuk 29.08.2024 12:13

Этот ответ исправил мои проблемы. stackoverflow.com/a/53963081/531928

Gunslinger 29.08.2024 17:03
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
7
57
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Попробуйте добавить аннотации @RequestMapping в класс LoggingController.

Попробовал добавить @RequestMapping("/") с тем же результатом.

Gunslinger 29.08.2024 05:47

Совершите экскурсию . На мой взгляд, ваш ответ больше подходит в качестве комментария. В любом случае, он идентичен этому комментарию , который уже указал ОП, не решил его проблему. Вам нужно заслужить право комментировать.

Abra 30.08.2024 09:11
Ответ принят как подходящий

Здесь есть две возможные причины, по которым контроллер возвращает 404.

Потертая структура

Возможно, ваш контроллер находится в пакете «над» основным классом.

например

src/main/java
|-- controllers
    |-- LoggingControler
|-- framework
    |-- MainApplication

Либо переместите MainApplication в самый внешний общий пакет, либо объявите @ComponentScan в классе MainApplication, который добавит другие пакеты, в которых классы собираются при сканировании.

src/main/java
|-- controllers
    |-- LoggingControler
|-- MainApplication

Контекстный путь

Возможно, вы объявили свойство server.servlet.context-path в файле application.properties.

например

server.servlet.context-path=foo

тогда путь, который вы должны запросить, будет: http://localhost:8080/foo/test

LoggingController может находиться в другом пакете, а не в одном пакете с @SpringBootApplication XXXXApplication? добавьте @ComponentScan для сканирования пакета loggingcontroller

Вам следует добавить @RequestMapping("/insertSomething") к вашему контроллеру. Затем используйте полный путь для доступа к нему: yourAdress/insertSomething/test.

Вам также следует сделать так, чтобы при отправке запроса не добавлялось / в конце URL-адреса (например, если вы используете какое-либо внешнее приложение для выполнения запроса).

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

Spring: получение ошибки грамматики неправильного sql для именованного параметра – удаление параметра устраняет ошибку
Ошибка создания bean-компонента с именем «entityManagerFactory», определенным в ресурсе пути к классу: невозможно построить Hibernate SessionFactory;
Как использовать внешние файлы конфигурации для обеспечения специфичных для среды конфигураций в приложении Spring Boot?
@SpringBootTest Тесты с WebTestClient не работают после перехода с Spring-boot-starter-parent версии 3.2.5 на 3.3.3
CVE-2024-38809: DoS Spring Framework через условный HTTP-запрос
Как динамически обрабатывать предложение WHERE, если от клиента не было отправлено никаких входных параметров
Невозможно внедрить @Repository в @Service
Клиент Spring OAuth2 выполняет выход из обратного канала с истекшим идентификатором токена
Фильтрация представления таблицы
Дублирующая ошибка определения макета при использовании @MockBean для переопределения bean-компонента в нескольких тестовых классах Spring Boot