前言:
項目介紹,此項目是一個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容器有沖突。希望能幫到看過這篇文章的人。