Почему мой маршрут /ping возвращает 404 в приложении Spring MVC (а не в Spring Boot)?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Почему мой маршрут /ping возвращает 404 в приложении Spring MVC (а не в Spring Boot)?

Сообщение Anonymous »

Я работаю над своим первым проектом Spring MVC (не Spring Boot) и сталкиваюсь с проблемой 404 при вызове маршрута /ping для проверки работоспособности.
У меня есть простой PingController, определенный следующим образом:
package org.example.tricol.controllers;

import org.example.tricol.utils.Console;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class PingController {
public PingController() {
Console.header("PingController initialized");
}

@GetMapping("/ping")
public String ping() {
return "pong";
}

Журналы показывают, что Spring правильно отображает /ping, но когда я пытаюсь получить к нему доступ через браузер или Curl, я получаю сообщение 404 Not Found.
Настройка проекта
  • Построено с помощью Spring Core + MVC, без Spring Boot
  • Развернуто на Tomcat 10
  • Проект упакован как .war
  • Путь к контексту: /tricol
  • IntelliJ используется в качестве IDE
  • Файл web.xml отсутствует (я использую конфигурацию на основе Java)
Соответствует Конфигурация
WebAppInitializer.java
package org.example.tricol.config;

import org.example.tricol.utils.Console;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
public WebAppInitializer() {
Console.header("WEB APP INITIALIZER");
}

@Override
protected Class[] getRootConfigClasses() {
return new Class[] { AppConfig.class, DataSourceConfig.class };
}

@Override
protected Class[] getServletConfigClasses() {
return new Class[] { WebMvcConfig.class };
}

@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}

AppConfig.java
package org.example.tricol.config;

import org.example.tricol.utils.Console;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@Configuration
@ComponentScan(basePackages = "org.example.tricol")
@EnableJpaRepositories(basePackages = "org.example.tricol.repositories")
@EnableTransactionManagement // enable @Transactional
public class AppConfig {
public AppConfig() {
Console.header("TRICOL FOURNISSEURS MANAGEMENT - APP CONFIG");
}
}

WebMvcConfig
package org.example.tricol.config;

import org.example.tricol.utils.Console;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
public class WebMvcConfig {
public WebMvcConfig() {
Console.header("WEB MVC CONFIGURATION");
}
}

Вопрос
Почему мой маршрут /ping по-прежнему возвращает 404, хотя Spring показывает, что он сопоставлен?

Что-то не так с моей конфигурацией или настройкой развертывания (контекст Tomcat, .war или сопоставление сервлетов)?
Я уверен, что проблема возникла из-за отсутствие понимания процесса загрузки приложения или процесса обработки маршрутов.
Изменить:
--------------------------------------------------
09:24:47.045 [RMI TCP Connection(2)-127.0.0.1] INFO org.example.tricol.utils.Console -- >>> PINGCONTROLLER INITIALIZED

Подробнее здесь: https://stackoverflow.com/questions/797 ... pring-boot
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»