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 都可以採用這種方式 !

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

參考資料https://docs.spring.io/spring-boot/docs/2.0.0.RELEASE/reference/htmlsingle/#howto-create-a-deployable-war-file

https://blog.csdn.net/hr787753/article/details/78562136

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章