1. 程式人生 > >springboot在本地開發通過,部署到伺服器上失敗,無法訪問

springboot在本地開發通過,部署到伺服器上失敗,無法訪問

自己在本地開發以及測試是沒有問題,但是部署到伺服器上之後訪問失敗,先看一下我的簡單配置吧

pom.xml檔案:工程的打包方式為war

將spring-boot-starter-tomcat的範圍設定為provided,

spring-boot-starter-tomcat是Spring Boot預設就會配置的,即上面說到的內嵌tomcat,將其設定為provided是在打包時會將該包(依賴)排除,因為要放到獨立的tomcat中執行,Spring Boot內嵌的Tomcat是不需要用到的。

以上就是簡單的配置,但感覺沒什麼問題啊,為什麼還是不能訪問,最後發現是因為:

若打包成war包,放到tomcat下執行的話,則需要繼承 org.springframework.boot.context.web.SpringBootServletInitializer

類,覆蓋其config(SpringApplicationBuilder)方法,

所以在application啟動類同級中加入了下面的類

當然也可以在application中直接繼承這個類,然後實現configure方法即可。

ServletInitializer是Servlet初始化器,意思是當本應用作為tomcat的一個webapp時,就呼叫configure函式,這是tomcat容器呼叫的,這時整個應用就相當於Servlet。 
當作為SpringApplication執行時,會執行main函式,但是不會執行上面的configure函數了。

建議 : 無論 jar 還是 war 都可以採用這種方式 !

以上是我遇到的問題,當然導致這種原因的也有其他的可能性,如果和我的配置不一樣的話,那需要好好排查排查了~