1.第一步:提供一个SpringBootServletInitializer的子类并重写configure方法。Spring Framework的Servlet 3.0支持并允许您在由Servlet容器启动时配置您的应用程序。通常,您需要更新您的应用程序的主类去继承SpringBootServletInitializer:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
2.第二步:您需要修改你的pom.xml配置文件,以便于您的项目生成的是一个war文件,而不是jar文件。如果您使用的是Maven并且使用了spring-boot-starter-parent(它会配置Maven的war插件给您):
<packaging>war</packaging>
如果您是用的是Gradle,你需要修改build.gradle将war插件应用于项目:
apply plugin: 'war'
最后一步:确保嵌入的Servlet容器不会干扰war文件将部署的servlet容器,为此,需要对嵌入的servlet容器进行标记,并提供其依赖项。
如果您使用Maven:
<dependencies>
<!-- … -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- … -->
</dependencies>
如果您使用Gradle:
dependencies {
// …
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
// …
}