前言:
spring boot默认情况下是自带了一个嵌入式容器,也就是不用部署在tomcat或jetty容器中即可访问及运行,所以,需要打包构建war及部署在服务器上,必须修改启动类:
如下:
/**
* 默认情况下是自带的嵌入式容器,如果需要构建war文件并进行部署时
* 修改启动类,继承 SpringBootServletInitializer 并重写 configure 方法
* 打成war包放到tomcat中启动必须要这个类才行
*/
@SpringBootApplication
public class BattleManagerApplication extends SpringBootServletInitializer{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(BattleManagerApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(BattleManagerApplication.class, args);
}
}
官网文档如下:
SpringBootServletInitializer类
- java.lang.Object继承
-
- org.springframework.boot.context.web.SpringBootServletInitializer
-
-
所有实现的接口:
- WebApplicationInitializer
-
公共抽象类SpringBootServletInitializer extends Object 实现WebApplicationInitializer
一个自以为是WebApplicationInitializer
运行SpringApplication
从传统的WAR部署。结合Servlet
,Filter
并ServletContextInitializer
从应用程序上下文的servlet容器豆。配置应用程序可以覆盖
configure(SpringApplicationBuilder)
方法(调用SpringApplicationBuilder.sources(Object...)
)或使初始化程序本身成为一个@Configuration
。如果您SpringBootServletInitializer
与其他组合使用,WebApplicationInitializers
您可能还需要添加@Ordered
注释来配置特定的启动顺序。请注意,只有在构建war文件并进行部署时,才需要WebApplicationInitializer。如果你喜欢运行一个嵌入式的容器,那么你根本不需要这个。
方法摘要
修饰符和类型 方法和说明 protected SpringApplicationBuilder
configure(SpringApplicationBuilder builder)
配置应用程序。protected WebApplicationContext
createRootApplicationContext(ServletContext servletContext)
void
onStartup(ServletContext servletContext)
protected WebApplicationContext
run(SpringApplication application)
被称为运行完全配置SpringApplication
。