前言:
項目介紹,此項目是一個Maven多模塊項目,模塊項目:all(父模塊);util (公用的工具類);dao(實體類、業務類、mapper、mapper.xml);business(業務service);app-root(是一個父級項目,包含了 backend、pc、mobile、schedule)……
結構圖:
all + -- app-root + -- app-backend -- app-pc -- app-mobile -- app-schedule -- business -- dao -- util
錯誤:
錯誤介紹,我把app-backend項目用Maven打成war包之后,上傳到生產的tomcat上,tomcat能正常啟動。但是,訪問的時候報404。
解決方法:
1、在app-backend項目中另外創建一個類(BackendInTomcatApplication)跟啟動類(AppBackendApplication)在同一個包下,類代碼如下
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
/**
* @author wang.hz
* @Date 2018/7/4
* <p>解決springboot打成war包,部署tomcat后訪問404問題</p>
*/
public class BackendInTomcatApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(AppBackendApplication.class);
}
}
2、在app-backend項目的pom.xml,中修改如下依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--忽略內嵌tomcat,打包部署到tomcat。注*本地運行的時候要把這一段忽略引入個注釋掉,要不然項目啟動不了-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
總結:
我通過上面兩步,問題就解決了。報錯原因是因為springboot內嵌的tomcat和我們的tomcat容器有沖突。希望能幫到看過這篇文章的人。

