SpringBoot專案打包釋出到外部tomcat時,出現各種異常的解決fang
先說遇到問題的情景:
初次嘗試使用spring boot框架寫了個小web專案,在Intellij IDEA中能正常啟動執行。使用maven 執行install,生成war包,釋出到本機的tomcat下,出現異常,主要的異常資訊是 …LifeCycleException。經各種搜尋,找到答案。
spring boot因為內嵌tomcat容器,所以可以通過打包為jar包的方法將專案釋出,但是如何將spring boot專案打包成可釋出到tomcat中的war包專案呢?
-
既然需要打包成war包專案,首先需要在pom.xml檔案中修改打包型別,將spring boot預設的jar修改為war形式;
-
其次spring boot的web專案中內嵌tomcat伺服器,所以如果我們想要釋出war包到tomcat專案,要講spring boot中內嵌的tomcat包依賴排除,不然產生衝突,開啟下面程式碼中的註釋即可。
1 2 3 4 5 6 7 8 9 10 11 12 org.springframework.boot spring-boot-starter-web 有一點想說的是,如果本地開發的時候依然想要使用spring boot內嵌tomcat進行除錯,新增如下依賴即可;
1 2 3 4 5 org.springframework.boot spring-boot-starter-tomcat provided 3. spring boot釋出jar包web程式的入口是main函式所在的類,使用@SpringBootApplication註解。但是如果war包釋出至tomcat,需要增加 SpringBootServletInitializer 子類,並覆蓋它的 configure 方法,或者直接將main函式所在的類繼承 SpringBootServletInitializer 子類,並覆蓋它的 configure 方法。程式碼舉例如下,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 @SpringBootApplication public class DemoApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure( SpringApplicationBuilder application) { return application.sources(DemoApplication.class); } public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }