为什么我们要扩展 SpringBootServletInitializer
以便在外部 tomcat
上运行 SpringBoot
应用程序?
如果不扩展 SpringBootServletInitializer
它运行在嵌入式 tomcat 上,那么为什么在将它部署到外部 tomcat 时需要扩展 SpringBootServletInitializer
?
最佳答案
较旧的 Servlet 容器不支持 Servlet 3.0 中使用的 ServletContextInitializer 引导进程。您仍然可以在这些容器中使用 Spring 和 Spring Boot,但是您将需要向您的应用程序添加一个 web.xml 并将其配置为通过 DispatcherServlet 加载一个 ApplicationContext .
为了创建可部署的 war 文件,需要提供一个 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) {
SpringApplication.run(Application.class, args);
}
}
您可以引用下面的链接
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
关于java - 为什么在部署到外部tomcat时需要扩展`SpringBootServletInitializer`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48047909/