1. 程式人生 > >SpringBoot專案打包釋出到外部tomcat時,出現各種異常的解決fang

SpringBoot專案打包釋出到外部tomcat時,出現各種異常的解決fang

先說遇到問題的情景:

初次嘗試使用spring boot框架寫了個小web專案,在Intellij IDEA中能正常啟動執行。使用maven 執行install,生成war包,釋出到本機的tomcat下,出現異常,主要的異常資訊是  …LifeCycleException。經各種搜尋,找到答案。

spring boot因為內嵌tomcat容器,所以可以通過打包為jar包的方法將專案釋出,但是如何將spring boot專案打包成可釋出到tomcat中的war包專案呢?

  1. 既然需要打包成war包專案,首先需要在pom.xml檔案中修改打包型別,將spring boot預設的jar修改為war形式;

  2. 其次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);     } }

以上就完成了spring boot專案打包war包的所有步驟,可以釋出至tomcat7及其以上版本。