java - 为什么在部署到外部tomcat时需要扩展`SpringBootServletInitializer`

标签 java tomcat spring-boot deployment

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

相关文章:

Java 正则表达式 特殊字符和 & 符号

jsp - 当我的本地主机使用 glassfish 时,Netbeans 可以部署到远程 tomcat 服务器吗?

java - 错误 : "javax.servlet.ServletException: Failed to load test suite [SampleTest], Reason is [Class not found "SampleTest"] "

spring-boot - 在内存数据库中使用时出现 R2dbc H2 问题

java - 在一个 Github 存储库中拥有多个 eclipse 项目

java - 带有无用堆栈跟踪的异常

java - 应用程序随着时间的推移变慢 - Java + Python

java - 在外部 Tomcat 容器中加载文件与 Bootrun

java - Spring Cloud Netflix Zuul。 SQLSyntaxErrorException : Table 'rate' doesn't exist

java - 在 TableView JavaFX 中逐列设置项目