为什么这个Spring Boot应用程序找不到主页面?

我试图创建一个最小的Spring Boot应用程序,允许我在前端使用ReactJS。

我想实现的

当我运行Spring Boot应用程序时,它应该显示一个包含React组件的页面。

项目的结构

你可以在这里找到源代码。

  • Spring Boot应用程序类
  • 控制器类

  • 主HTML页面

  • 反应代码

我得到了什么

当我

  1. 运行mvn clean mvn clean spring-boot:run`和
  2. 导航到http://localhost:8080

我得到了404错误(见下文)。

错误信息

我该如何解决?

笔记:

  1. 我从教程React.js和Spring Data REST中复制了这个方法。
  2. 不要告诉我摆脱Kotlin,它是不太可能是Kotlin导致的问题。

更新1(07.08.2017 22:17 MSK):

mvn clean spring-boot:run的输出可以在这里找到。

更新2(07.08.2017 22:44 MSK):

MyAppRestController更改为Controller并将main方法移到里面并没有帮助。

目前, MyApp类看起来像这样:

 @SpringBootApplication @Controller open class MyApp { fun main(args: Array<String>) { SpringApplication.run(MyApp::class.java,*args) } } 

现在我没有在Kotlin的经验,但我可以告诉你,你错过了下面的代码中的东西(除了有一个额外的RestController注释)。

 @SpringBootApplication @RestController open class MyApp { } 

在Java中,此类除了具有以下静态方法运行的main之外,还实现了ServletContextInitializer

 SpringApplication.run(MyApp.class, args); 

我希望这有帮助。

更新

尝试添加一个模板解析bean,现在不是唯一的方法来做到这一点,但值得一试,看起来像下面这样:

 @Bean public ClassLoaderTemplateResolver yourTemplateResolver() { ClassLoaderTemplateResolver yourTemplateResolver = new ClassLoaderTemplateResolver(); yourTemplateResolver.setPrefix("templates/"); return yourTemplateResolver; } 

并将以下行添加到您的application.properties中:

 spring.thymeleaf.check-template-location=true spring.thymeleaf.suffix=.html 

不要忘了将百里香输入您的POM:

 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>