为什么我的控制器中的根路径映射到 spring 引导 Web 应用程序中的 index.html?

Why does root path in my controller maps to index.html in spring boot web application?

我正在测试 Spring 启动应用程序的控制器。我想将资源映射到路径,这应该是我的 API 的一部分。 我的控制器对路径非常具体:

@Controller
public class DefaultController
{
  @RequestMapping("${web-interface}")
  public String main()
  {
    return "index.html";
  }
}

这里'web-interface'是一个属性,在application.yml文件中指定

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/search-engine
    username: landsreyk
    password: 12345678
  jpa:
    database-platform: org.hibernate.dialect.MySQLDialect
    show-sql: false
    hibernate:
      ddl-auto: none
web-interface: /admin

预期行为:

路径:localhost:8080/admin 映射到 index.html 资源

根路径:localhost:8080/ 映射为空,即 404 错误。

实际行为:

路径:“/admin”映射到 index.html

路径:“/”也映射到 index.html

但是为什么呢?我不应该只看到“Whitelabel Error Page”吗?没有控制器,它将根路径映射到 index.html 文件。没有任何意义。

顺便说一下,这是我的项目结构。

解法:

将 index.html 重命名为任何其他名称,例如 main.html 并且根路径“/”将不再映射到该资源。

根路径 "/" 默认映射到 index.html。它是所有语言和框架的标准。 index.html 是您应用程序的入口点

这是每个入口点的默认行为。 DefaultController 实现了默认行为,这就是为什么调用 "/""/root" 无关紧要的原因。 更多信息:https://docs.spring.io/spring-boot/docs/2.6.1/reference/htmlsingle/#web.servlet.spring-mvc.welcome-page