Spring Boot应用程序在部署到Tomcat时提供404,但与嵌入式服务器配合使用

在使用Spring MVC提供Web内容的指导下,我正在创建一个Spring Boot Web应用程序,我可以使用嵌入式Tomcat实例以及独立的Tomcat 8服务器运行它。

当作为java -jar adminpage.war执行时,应用程序按预期工作,当我访问http://localhost:8080/table时,我看到了预期的结果。 但是,当我部署到Tomcat 8服务器时(通过将adminpage.war删除到webapps目录中),当我访问https://myserver/adminpage/table时出现404错误。

catelina.loglocalhost.log文件在Tomcat服务器上没有任何帮助。

任何人都可以建议我在哪里做了错误的配置? 我在过去使用Spring Boot部署RESTful服务时遇到了同样的问题,但这是我第一次涉足Web应用程序。

我的申请文件:

src/main/java/com/.../Application.java

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

src/main/java/com/.../MainController.java

 @Controller public class MainController { @RequestMapping("/table") public String greeting(Model model) { model.addAttribute("name", "Fooballs"); return "table"; } } 

src/main/resources/templates/table.html

       

pom.xml

  4.0.0 com.foo adminpage 1.0-SNAPSHOT war  org.springframework.boot spring-boot-starter-parent 1.4.0.RELEASE    org.springframework.boot spring-boot-starter-web   org.springframework.boot spring-boot-starter-tomcat provided   org.springframework.boot spring-boot-starter-thymeleaf   org.springframework.boot spring-boot-devtools true    1.8 UTF-8   adminpage   org.springframework.boot spring-boot-maven-plugin     

我忘了调整我的Application.java文件来扩展SpringBootServletInitializer并覆盖configure方法。

更正文件:

 @SpringBootApplication public class Application extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } } 

帽子提示https://mtdevuk.com/2015/07/16/how-to-make-a-spring-boot-jar-into-a-war-to-deploy-on-tomcat/指出我的错误。

有关在Spring Boot官方文档中创建可部署war文件的更多信息。