前言
在做api接入网关的技术选型的时候,有考虑过既然是开发类似HTTP代理的系统,如果是基于现有的web容器(如tomcat),使用SSM框架的思路进行开发的话未免有些重度,有没有一种脱离Servlet api的技术方案呢?在研究过Spring Cloud Gateway之后,发现它提供了一套很好的解决方案。不过在聊这一套解决方案之前,需要介绍一下Spring Boot内嵌Web容器这个基础。
5.1 内置web容器的类型
Spring Boot一个很重要的特性就是内置了Web Server,一步到位,连服务部署的事情都可以省了,让我们可以忘了什么是Tomcat,什么是Jetty。我们在Spring Boot AutoConfiguration包里的spring.factories中可以看到有以下关键AutoConfiguration
其中EmbeddedWebServerFactoryCustomizerAutoConfiguration就是用来自动配置我们常见的Tomcat,Jetty等内置web容器的,这里使用到了前面文章介绍到的@ConditionalOnClass机制来根据当前运行环境的classpath下是否有Tomcat.class等和web容器相关的class,然后配置并注入对应的容器实例。
其中还有一个ReactiveWebServerFactoryAutoConfiguration也是用来配置web容器的,打开源码会看到它的配置如下: