SpringBootServletInitializer

SpringBootServletInitializer

为什么要扩展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

07-26 09:02