代码之家  ›  专栏  ›  技术社区  ›  Mehraj Malik

为什么在将“SpringBootServletInitializer”部署到外部tomcat时需要扩展它

  •  20
  • Mehraj Malik  · 技术社区  · 7 年前

    我们为什么要扩展 SpringBootServletInitializer 为了运行 SpringBoot 应用于外部 tomcat ?

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

    2 回复  |  直到 7 年前
        1
  •  19
  •   ManojP    6 年前

    旧的Servlet容器不支持 ServletContextInitializer Servlet 3.0中使用的引导过程。您仍然可以在这些容器中使用Spring和Spring Boot,但需要添加一个web。并将其配置为加载 应用程序上下文 通过a DispatcherServlet .

    为了创建可部署的war文件,需要提供 SpringBootServletInitializer 子类并重写其 配置 方法这利用了Spring框架的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

        2
  •  7
  •   Mehraj Malik    7 年前

    以下是更多信息:

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

    我们也可以使用 WebApplicationInitializer 界面根据文件

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

    SpringBoot建议使用 JavaConfiguration 结束 xml configuration .

    它使用JavaConfiguration而不是 网状物xml .

    它有 SpringBootServletInitializer 类,该类最终实现 WebApplicationInitializer 接口并重写其 onStartup 配置内容。