為啥要整合外置Tomcat
在大部門公司里一般有專門的運(yùn)維團(tuán)隊(duì),他們負(fù)責(zé)對(duì)機(jī)器(現(xiàn)在大部分是docker)和代碼的編譯檢測(cè)以及代碼的發(fā)布。包括代碼運(yùn)行環(huán)境,如JDK的安裝,以及各種中間件在服務(wù)器上的安裝,因此Springboot這種直接集成了Tomcat的方式并不是特別的適用。
修改打包方式
修改項(xiàng)目的pom.xml配置,我們修改其打包方式為war方式,如:
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
添加servlet-api依賴
修改pom.xml,在maven的pom中添加servlet-api的依賴
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
修改啟動(dòng)類,并重寫初始化方法
在SpringBoot中我們平常用main方法啟動(dòng)的方式,都有一個(gè)SpringBootApplication的啟動(dòng)類,類似代碼如下:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
而我們現(xiàn)在需要類似于web.xml的配置方式來(lái)啟動(dòng)spring應(yīng)用,為此,我們?cè)贏pplication類的同級(jí)添加一個(gè)SpringBootStartApplication類,其代碼如下:
// 修改啟動(dòng)類,繼承 SpringBootServletInitializer 并重寫 configure 方法
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意這里一定要指向原先用main方法執(zhí)行的Application啟動(dòng)類
return builder.sources(Application.class);
}
}
更改build(在多module項(xiàng)目中,springboot默認(rèn)的build方式不會(huì)build所有的module,若不更改,會(huì)導(dǎo)致多個(gè)module相互引用找不到類)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<skipTests>true</skipTests> <!--默認(rèn)關(guān)掉單元測(cè)試 -->
</configuration>
</plugin>
</plugins>
</build>