SpringBoot默認(rèn)支持Tomcat7及以上版本(SpringBoot默認(rèn)支持servlet3.1版本及以上鹤盒,Tomcat6只支持到servlet2.5)
測(cè)試環(huán)境:jdk1.8 + tomcat7+SpringBoot2.1.0.M1 ?释牺、 jdk1.8+ tomcat8.5+SpringBoot2.1.0.M1
1、在pom.xml文件中竹挡,把打包形式j(luò)ar改為war
<packaging>war</packaging>
2、在pom.xml文件下去除內(nèi)置tomcat
這里配置有兩種方法立膛,一種是
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> ? ? ?<!-- 移除嵌入式tomcat插件 --> ? ?<exclusions> ? ? ? ?<exclusion> ? ? ? ? ? ?<groupId>org.springframework.boot</groupId> ? ? ? ? ? ?<artifactId>spring-boot-starter-tomcat</artifactId> ? ? ? ?</exclusion> ? ?</exclusions></dependency>
這種方法會(huì)直接移除內(nèi)置tomcat揪罕,即本地開發(fā)也需要用自己配置的tomcat才行,用main方法運(yùn)行會(huì)報(bào)錯(cuò)宝泵『脝可參考最后一步進(jìn)行修改,使用自己配置的tomcat進(jìn)行開發(fā)調(diào)試儿奶;
另一種方式是坎怪,添加
? ? ? ?<dependency> ? ? ? ? ? ?<groupId>org.springframework.boot</groupId> ? ? ? ? ? ?<artifactId>spring-boot-starter-tomcat</artifactId> ? ? ? ? ? ?<scope>provided</scope> ? ? ? ?</dependency>
這種方法依然可以使用內(nèi)置的tomcat進(jìn)行開發(fā)調(diào)試。
3廓握、添加servlet-api的依賴
添加servlet-api有兩種方式搅窿,選其一即可
<dependency> ? ?<groupId>javax.servlet</groupId> ? ?<artifactId>javax.servlet-api</artifactId> ? ?<version>3.1.0</version> ? ?<scope>provided</scope></dependency>
<dependency> ? ?<groupId>org.apache.tomcat</groupId> ? ?<artifactId>tomcat-servlet-api</artifactId> ? ?<version>8.0.36</version> ? ?<scope>provided</scope></dependency>
4、修改啟動(dòng)類
原先啟動(dòng)SpringBoot是通過(guò)main方法啟動(dòng)的隙券,現(xiàn)在需要讓啟動(dòng)類繼承SpringBootServletInitializer男应,并重寫configure方法,如
5娱仔、在pom.xml的build中添加項(xiàng)目打包后的名稱
6沐飘、打包部署
(1)、命令行打包
以命令行的形式進(jìn)入到項(xiàng)目的目錄下牲迫,輸入如下命令(需在環(huán)境變量中配置maven路徑)
mvn clean package
出現(xiàn)如下圖示即說(shuō)明打包成功
(2)耐朴、在eclipse中打包項(xiàng)目
右鍵點(diǎn)擊項(xiàng)目 - Run as - Maven build ,在彈窗中的Goals輸入package盹憎,點(diǎn)擊Run
即可自動(dòng)打包筛峭。打包完成界面與命令行打包一致。
(3)陪每、部署
打包文件在項(xiàng)目路徑下的target目錄里面影晓,如
放置到tomcat的webapps目錄下,即可直接運(yùn)行檩禾,需要注意的是挂签,訪問(wèn)路徑需要加上項(xiàng)目名的路徑,如下圖
7盼产、eclipse中移除內(nèi)置tomcat饵婆,運(yùn)行項(xiàng)目可能遇到的問(wèn)題
在第二步的時(shí)候,如果采用第一種方法移除了內(nèi)置tomcat的話戏售,在項(xiàng)目中運(yùn)行時(shí)就需要選擇Run on server了侨核。然后選擇tomcat服務(wù)器(需tomcat7以上)草穆,這時(shí)候有可能會(huì)遇到下面的錯(cuò)誤。
出現(xiàn)這個(gè)錯(cuò)誤的解決方法是芹关,右鍵點(diǎn)擊項(xiàng)目 - properties - ?Project Facets 续挟,把Cloud Foundry Standalone Application的勾去掉紧卒。
接下去侥衬,就可以在eclipse中配置的tomcat上運(yùn)行項(xiàng)目了。
8跑芳、讓springboot支持tomcat6的方法
springboot要支持servlet2.5轴总,才可以在tomcat6中運(yùn)行,讓springboot支持servlet2.5需用到spring-boot-legacy博个,該插件目前只支持到springboot2.0.3版本怀樟。
測(cè)試環(huán)境:tomcat6 + jdk 1.8 +Springboot 1.5.9.RELEASE
(1)、pom.xml中新增插件
在上面1-5步配置完后盆佣,繼續(xù)配置pom.xml往堡。新增spring-boot-legacy依賴
<dependency> ? ?<groupId>org.springframework.boot</groupId> ? ?<artifactId>spring-boot-legacy</artifactId> ? ?<version>1.1.0.RELEASE</version></dependency>
(2)、在main目錄下新建webapp/WEB-INF/web.xml如下圖
(3)共耍、復(fù)制下面內(nèi)容到web.xml中虑灰,并配置啟動(dòng)類的位置
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" ? ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ? ?xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> ? ?<context-param> ? ? ? ?<param-name>contextConfigLocation</param-name> ? ? ? ?<!-- 配置Application啟動(dòng)類的具體位置 ? ? ? ? 如啟動(dòng)類在com.example.DemoApplication.java,則配置如下 ? ? ? ?--> ? ? ? ?<param-value>com.example.DemoApplication</param-value> ? ?</context-param> ? ?<listener> ? ? ? ?<listener-class>org.springframework.boot.legacy.context.web.SpringBootContextLoaderListener</listener-class> ? ?</listener> ? ?<servlet> ? ? ? ?<servlet-name>appServlet</servlet-name> ? ? ? ?<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> ? ? ? ?<init-param> ? ? ? ? ? ?<param-name>contextAttribute</param-name> ? ? ? ? ? ?<param-value>org.springframework.web.context.WebApplicationContext.ROOT</param-value> ? ? ? ?</init-param> ? ? ? ?<load-on-startup>1</load-on-startup> ? ?</servlet> ? ?<servlet-mapping> ? ? ? ?<servlet-name>appServlet</servlet-name> ? ? ? ?<url-pattern>/</url-pattern> ? ?</servlet-mapping></web-app>
(4)痹兜、打包部署穆咐,參照上面第6步
到此,導(dǎo)出的war包即可在tomcat6中運(yùn)行字旭。