以war形式部署springboot项目

以war形式部署springboot项目

把springboot以war形式部署到Servlet容器

修改maven项目的打包方式

<packaging>war</packaging>

修改maven项目中,嵌入式Servlet容器的依赖范围

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-tomcat</artifactId>
	<scope>provided</scope>
</dependency>

继承类 SpringBootServletInitializer

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

@SpringBootApplication
public class JavawebApplication extends SpringBootServletInitializer {

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

	/**
	 * 覆写方法
	 */
	@Override
	protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
		// 指定@SpringBootApplication类
		return application.sources(JavawebApplication.class);
	}
}

原理

使用的是Servlet 3 提供的 sci 机制。具体详情,可以参考
https://javaweb.io/post/301