將SpringBoot部署到Tomcat下
阿新 • • 發佈:2019-01-04
需要資源:
SpringBoot專案,Tomcat
注意內容:使用的是SpringBoot2.0,在部署的時候需要el-api.jar的版本號為3.0。否則在啟動的時候會出現以下錯誤。推薦使用tomcat8及以上版本(當然也可以替換tomcat中的el-api.jar為3.0版本的)
Caused by: java.lang.NoClassDefFoundError: javax/el/ELManager
第一步:修改pom.xml
因為我們要使用自己的web容器,所以,要排除掉SpringBoot中的自帶容器依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
另外還需要新增servlet-api.jar在編譯測試階段使用。不過個人推薦可以使用javaee-api.jar(裡面包含了servlet,el,jsp等所需的包)
注意:version 5的group是javaee 。version為5以上的group是javax
<dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> <scope>provided</scope> </dependency>
第二步:註冊入口類
基於servlet3.0,已經可以不需要web.xml了。spring為我們提供了WebApplicationInitializer介面,由servlet3.0自動引導。
我們繼承實現了WebApplicationInitializer介面的的SpringBootServletInitializer,使用其configure來載入SpringBoot的入口配置。
public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // TODO Auto-generated method stub return builder.sources(ApplicationEntrance.class); } }
第三步:打war包,放入Tomcat下執行
如果在eclipse中打包war的話執行maven install
在eclipse中也可以直接釋出到tomcat中進行執行。
也可以到專案目錄執行mvn clean package 打包成war包,然後放到tomcat下執行