为什么要扩展SpringBootServletInitializer
以便将SpringBoot
应用程序运行到外部tomcat
?
如果不扩展SpringBootServletInitializer
,它可以在嵌入式tomcat上运行,那么为什么在将SpringBootServletInitializer
部署到外部tomcat时必须对其进行扩展?
最佳答案
较旧的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