一. 我这里用的环境
tomcat: tomcat 8
jdk: jdk 7
spring boot 版本: 1.5
二. 将创建好的spring boot项目做如下修改
2.1. 修改打包形式
在pom.xml中设置
<packaging>war</packaging>
2.2. 移除切入式tomcat插件
在spring-boot-starter-web,添加如下配置
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 排除内置容器,排除内置容器导出成war包可以让外部容器运行spring-boot项目--> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
2.3,。添加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>
2.4. 修改启动类,并重写初始化方法
/** * 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法 */ public class SpringBootStartApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // 注意这里要指向原先用main方法执行的Demo3Application启动类 return builder.sources(Demo3Application.class); } }
2.5. 程序生成一个war文件
然后放到部署到tomcat下
三、使用Spring Boot 2.1版本时
3.1、环境
tomcat: tomcat 9
jdk: jdk 8
spring boot 版本: 2.1
3.2、同上面的 2.1 和2.2, 2.5 三个一样
2.3配置如下
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
2.4
@SpringBootApplication public class MonitorTuningApplication extends SpringBootServletInitializer{ public static void main(String[] args) { SpringApplication.run(MonitorTuningApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(MonitorTuningApplication.class); } }