1. 程式人生 > >將SpringBoot部署到Tomcat下

將SpringBoot部署到Tomcat下

需要資源:

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下執行