先看一下我創建的最簡單的項目吧。
- controller類
@RestController
public class TestController {
@RequestMapping("index")
public String index() {
return "hello";
}
}
- pom文件沒有做任何修改,我們直接啟動這個項目,注意看啟動的日志中有關嵌入式tomcat的版本的

我這里的版本是8.5.37,這個是由你選用的springboot的版本定的,我選用的springboot是2.0.8版本的。好了,我們就直接訪問項目了,訪問成功

好了,我們剛才是直接在idea中啟動了這個類,當然就可以打包成jar包啟動了,就不演示了,直接開始打包為war包
1. 修改pom文件,因為springboot使用的內嵌式的tomcat,所以我們做如下操作
<!-- 將打包方式改為war包-->
<packaging>war</packaging>
<!--排除骨嵌式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>
<!-- 我們移除了嵌入式的tomcat,就要添加對應的tomcat依賴包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
好了,pom.xml算是改完了,這時候,我們在idea中直接啟動SpringBootApplication.java時會報以下錯誤

2.新建一個啟動類,tomcat是找不到springboot的啟動類的,我們要新建一個類指向它,這個類要繼承SpringBootServletInitializer類,並重寫 configure 方法
在我們springboot啟動類的同一個下創建一個類
/**
* 修改啟動類,繼承 SpringBootServletInitializer 並重寫 configure 方法
*/
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意這里要指向原先用main方法執行的Application啟動類
return builder.sources(SpringbootWardemoApplication.class);
}
}
通過以上兩步,已經完成了由jar包轉為war的過程。
因為打包方式為war包,所有啟動這個類也就報錯了,同樣,也不能打包為jar包了。那么我們就在idea中配置tomcat啟動方式,tomcat的版本要和之前這個嵌入式的一樣(理論上只要大版本上相同就好了,同為tomcat8.5)。更多的tomcat版本下載,見tomcat各個版本下載
在idea配置tomcat啟動時可能有個小插曲,就是找不到對應的war包,你可以先使用maven打包一次,或者點擊下這里

我們在idea中用tomcat方式啟動后,沒有問題了。

最后,我們用maven打包,然后放在我們的tomcat中啟動就可以了
-
注意以下幾點 :
1.之前在springboot中一些配置不生效,最明顯的就是對端口的配置
2.如何修改之前的springboot項目的版本,只要在pom.xml中最開始的地方修改就可以了
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.8.RELEASE</version>
<relativePath/>
</parent>
3.[如何查看自己sprinboot中對應的嵌入式的tomcat的版本](https://www.cnblogs.com/Lyn4ever/p/11667967.html)
