在个人看来:spring boot = spring + 默认配置 + 内置tomcat ,若需要将spring boot应用部署到tomcat中,则需要将内置tomcat的依赖移除,并重新配置应用启动方法。
1. 修改maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--使用tomcat做web容器,排除内置的web容器-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--排除了内置的tomcat,需添加servlet-api,以下任选其一-->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!--<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. 修改启动类,并重写初始化方法
在Application类同目录下添加SpringBootStartApplication.java类文件:
/**
* 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
*/
public class SpringBootStartApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(Application.class);
}
}
tips:
Ideal中使用Maven打成war包:

运行:java -jar xx.war