【问题标题】:Why it is necessary to extend`SpringBootServletInitializer` while deploying it to an external tomcat为什么在部署到外部tomcat时需要扩展SpringBootServletInitializer
【发布时间】:2018-06-11 09:19:04
【问题描述】:

为什么我们应该扩展SpringBootServletInitializer 以便将SpringBoot 应用程序运行到外部tomcat

如果不扩展SpringBootServletInitializer 它在嵌入式tomcat 上运行,那么为什么在将其部署到外部tomcat 时需要扩展SpringBootServletInitializer

【问题讨论】:

    标签: java tomcat spring-boot deployment


    【解决方案1】:

    较旧的 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

    【讨论】:

    • 一个问题.. 为什么我们需要这个功能受保护的 SpringApplicationBuilder 配置(SpringApplicationBuilder 应用程序)?没有这个功能,我的应用程序运行得很好。
    【解决方案2】:

    这里有更多信息:

    为了部署基于Servlet 的Web 应用程序(如Spring),您实际上需要提供传统的web.xml

    我们也可以使用WebApplicationInitializer 接口以编程方式做同样的事情。根据文档

    要在 Servlet 3.0+ 环境中实现的接口,以便 以编程方式配置 ServletContext - 而不是(或 可能与)传统的基于 web.xml 的方法结合使用。

    正如 SpringBoot 建议使用 JavaConfiguration 而不是 xml configuration

    它使用 JavaConfiguration 而不是 web.xml

    它有SpringBootServletInitializer 类,最终实现WebApplicationInitializer 接口并覆盖其onStartup 来配置事物。

    【讨论】:

      猜你喜欢
      • 2020-01-15
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2012-04-06
      • 2019-08-21
      • 1970-01-01
      • 2023-03-08
      • 2012-03-14
      相关资源
      最近更新 更多