前言
SpringBoot默认达成jar包,默认使用内置的Tomcat。但考虑到项目需要打成war包部署到外部的Tomcat服务器中。把SpringBoot项目按照平常的web项目一样发布到tomcat容器下。
1、修改pom.xml文件将默认的jar(默认创建项目的时候没有packaging**)方式改为war。**
1 <modelVersion>4.0.0</modelVersion> 2 <parent> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter-parent</artifactId> 5 <version>2.2.2.RELEASE</version> 6 <relativePath/> <!-- lookup parent from repository --> 7 </parent> 8 <groupId>com.example.mybaties</groupId> 9 <artifactId>springbootmybaties</artifactId> 10 <version>0.0.1-SNAPSHOT</version> 11 <name>springbootmybaties</name> 12 <description>Demo project for Spring Boot</description> 13 <!--默认为jar方式--> 14 <!--<packaging>jar</packaging>--> 15 <!--改为war方式--> 16 <packaging>war</packaging>
2、排除内置的Tomcat容器
1)第一种方式
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-web</artifactId> 4 <!--排除内置的Tomcat容器--> 5 <exclusions> 6 <exclusion> 7 <groupId>org.springframework.boot</groupId> 8 <artifactId>spring-boot-starter-tomcat</artifactId> 9 </exclusion> 10 </exclusions> 11 </dependency>
2)第二种方式
1 <dependency> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-tomcat</artifactId> 4 <scope>provided</scope> 5 </dependency>
3、继承org.springframework.boot.web.servlet.support.SpringBootServletInitializer,重写configure方法。
1)第一种方式,启动类继承SpringBootServletInitializer重写configure
1package com.example.mybaties; 2 3import org.springframework.boot.SpringApplication; 4import org.springframework.boot.autoconfigure.SpringBootApplication; 5import org.springframework.boot.builder.SpringApplicationBuilder; 6import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 7 8@SpringBootApplication 9public class SpringbootmybatiesApplication extends SpringBootServletInitializer { 10 11 public static void main(String[] args) { 12 SpringApplication.run(SpringbootmybatiesApplication.class, args); 13 } 14 15 @Override 16 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 17 return builder.sources(SpringbootmybatiesApplication.class); 18 } 19 20 21}
2)新增加一个类继承SpringBootServletInitializer重写configure
1package com.example.mybaties.config; 2 3import com.example.mybaties.SpringbootmybatiesApplication; 4import org.springframework.boot.builder.SpringApplicationBuilder; 5import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 6 7/** 8 * @author LST 9 * @version 1.0 10 * @Description: 11 * @date 2020-1-17 16:19 12 */ 13public class ServletInitializer extends SpringBootServletInitializer { 14 15 @Override 16 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 17 //此处的Application.class为带有@SpringBootApplication注解的启动类 18 return builder.sources(SpringbootmybatiesApplication.class); 19 } 20}
4、为了防止应用上下文所导致的项目访问资源加载不到的问题,建议pom.xml文件中<build></build>标签下添加<finalName></finalName>标签
1 <build> 2 <!--上下文路径--> 3 <finalName>mybaties</finalName> 4 <plugins> 5 <plugin> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-maven-plugin</artifactId> 8 </plugin> 9 </plugins> 10 </build>
5、打成war包
先clean再打包:mvn clean package -Dmaven.test.skip=true,也可使用idea自带的打包

6、将war包放入tomcat中,我使用的是tomcat8.

7、进入tomcat的bin目录下启动项目


8、直接用浏览器访问我的接口(这个接口是get)http://127.0.0.1:8080/mybaties/user/0ac94d4eab22610c71af9a02bd4e296c,或者使用postman等测试工具。
