如何SpringBoot项目改为外置Tomcat启动

 

正常情况下,我们开发 SpringBoot 项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了 (使用内置 Tomcat 的话,可以在 application.yml 中进行相关配置)

有时我们会需要打包成 war 包,放入外置的 Tomcat 中进行运行,步骤如下 (此处我用的 SpringBoot 版本为 2.1.1,Tomcat 的版本为 8.0)

 

一、排除内置 Tomcat

<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>

 

二、将打包方式更改为 war

<packaging>war</packaging>

 

三、修改启动类

使启动类继承 SpringBootServletInitializer 类,并覆盖 configure 方法

@SpringBootApplication
 public class DemoApplication extends SpringBootServletInitializer {

     @Override
     protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
         return builder.sources(DemoApplication.class);
     }

     public static void main(String[] args) {
         SpringApplication.run(DemoApplication.class, args);
     }
 }

 

四、添加依赖

由于 SpringBootServletInitializer 类需要用到 servlet-api 的相关 jar 包,所以需要添加依赖

<dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>4.0.1</version>
     <scope>provided</scope>
 </dependency>

 

五、配置外置 Tomcat


    首先点击右上角的图标


如何SpringBoot项目改为外置Tomcat启动_jar

    弹出弹框,配置 Artifacts

如何SpringBoot项目改为外置Tomcat启动_jar_02

    然后点击 Edit Configurations

如何SpringBoot项目改为外置Tomcat启动_jar_03



    弹出弹框,点击 + 号配置本地 Tomcat

如何SpringBoot项目改为外置Tomcat启动_tomcat_04

    接着在 Deployment 中添加之前配置的 Artifact,并将项目根目录设置为 /

如何SpringBoot项目改为外置Tomcat启动_spring_05

 

 

六、查看结果


最后启动项目,在浏览器中输入 http://localhost:8080/hello 就可以看到结果了


@RestController
 public class HelloController {

     @GetMapping(value = "/hello")
     public String hello() {
         return "Hello World!!!";
     }
 }


如何SpringBoot项目改为外置Tomcat启动_jar_06