为什么有必要扩展“SpringBootServletInitializer”,同时将其部署到外部tomcat
我们为什么要扩展才能将应用程序运行到外部?SpringBootServletInitializer
SpringBoot
tomcat
如果不扩展它,它运行在嵌入式tomcat上,那么为什么在将其部署到外部tomcat时需要扩展?SpringBootServletInitializer
SpringBootServletInitializer
我们为什么要扩展才能将应用程序运行到外部?SpringBootServletInitializer
SpringBoot
tomcat
如果不扩展它,它运行在嵌入式tomcat上,那么为什么在将其部署到外部tomcat时需要扩展?SpringBootServletInitializer
SpringBootServletInitializer
较旧的 Servlet 容器不支持 Servlet 3.0 中使用的 ServletContextInitializer 引导进程。您仍然可以在这些容器中使用Spring和Spring Boot,但是您需要将web.xml添加到您的应用程序中,并将其配置为通过DispatcherServlet加载AppplicationContext。
为了创建可部署的 war 文件,需要提供一个 SpringBootServletInitializer 子类并覆盖其配置方法。这利用了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) {
SpringApplication.run(Application.class, args);
}
}
您可以参考下面的链接
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
以下是一些更多信息:
为了部署一个基于Web的应用程序(如),你实际上需要提供传统的.Servlet
Spring
web.xml
我们也可以使用WebApplicationInitializer接口以编程方式做同样的事情。根据文档
在 Servlet 3.0+ 环境中实现的接口,以便以编程方式配置 ServletContext -- 而不是(或可能与)传统的基于 web .xml的方法结合使用。
正如SpringBoot建议使用.JavaConfiguration
xml configuration
它使用 JavaConfiguration 而不是 .web.xml
它有一个类,它最终实现接口并覆盖它来配置事物。SpringBootServletInitializer
WebApplicationInitializer
onStartup