• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SpringBoot启动过程深度——WebApplicationType

武飞扬头像
healthCode
帮助1

SpringBoot启动过程深度解析——WebApplicationType


WebApplicationType是Web应用程序类型的枚举,包含以下类型:

  • NONE:应用程序不应作为 Web 应用程序运行,也不应启动嵌入式 Web 服务器
  • SERVLET:应用程序应作为基于 servlet 的 Web 应用程序运行,并应启动嵌入式 servlet Web 服务器
  • REACTIVE:应用程序应作为反应式 Web 应用程序运行,并应启动嵌入式反应式 Web 服务器

WebApplicationType的判断逻辑


public enum WebApplicationType {

    static WebApplicationType deduceFromClasspath() {
      /**
      
        WebApplicationType.REACTIVE:
          需要此类:
            org.springframework.web.reactive.DispatcherHandler
          并且不含这两类:
            org.glassfish.jersey.servlet.ServletContainer
            org.springframework.web.servlet.DispatcherServlet

        WebApplicationType.NONE
          不含以下其中一个类:
            【tomcat包】javax.servlet.Servlet
            【spring-web包】org.springframework.web.context.ConfigurableWebApplicationContext

        WebApplicationType.SERVLET
          需要包含这两个类:
            【tomcat包】javax.servlet.Servlet
            【spring-web包】org.springframework.web.context.ConfigurableWebApplicationContext


      **/
        if (ClassUtils.isPresent(WEBFLUX_INDICATOR_CLASS, null) && !ClassUtils.isPresent(WEBMVC_INDICATOR_CLASS, null)
            && !ClassUtils.isPresent(JERSEY_INDICATOR_CLASS, null)) {
          return WebApplicationType.REACTIVE;
        }
        for (String className : SERVLET_INDICATOR_CLASSES) {
          if (!ClassUtils.isPresent(className, null)) {
            return WebApplicationType.NONE;
          }
        }
        return WebApplicationType.SERVLET;
      }
}

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgbhkij
系列文章
更多 icon
同类精品
更多 icon
继续加载