腾讯云wordpress搭建网站,谁帮助汉字叔叔做网站,找企业网站制作,西安企业名录黄页更多SpringBoot3内容请关注我的专栏#xff1a;《SpringBoot3》 期待您的点赞#x1f44d;收藏⭐评论✍ 重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类 工作原理关键组件以TomcatServletWebServerFactory为例ServletWebServerFactory会创建webServer的时机关键… 更多SpringBoot3内容请关注我的专栏《SpringBoot3》 期待您的点赞收藏⭐评论✍ 重学SpringBoot3-ServletWebServerFactoryAutoConfiguration类 工作原理关键组件以TomcatServletWebServerFactory为例ServletWebServerFactory会创建webServer的时机关键特性使用方式通过配置文件通过编程方式定制 结论 在Spring Boot 3中ServletWebServerFactoryAutoConfiguration 类扮演着至关重要的角色它负责自动配置内嵌的 Servlet 容器例如 Tomcat、Jetty 或 Undertow。这种自动配置能力是 Spring Boot 框架的核心特性之一它极大地简化了 Spring 应用的开发和部署过程。本文将深入探讨ServletWebServerFactoryAutoConfiguration 类的工作原理、配置方式以及如何通过它来定制内嵌Servlet容器。
工作原理 org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration ServletWebServerFactoryAutoConfiguration 类通过 Spring 的条件注解机制如 ConditionalOnClass 和 ConditionalOnMissingBean 等来检测 classpath 中可用的 Servlet 容器实现并据此配置相应的 ServletWebServerFactory 实例。这个工厂实例负责创建和配置内嵌的Servlet容器并且绑定了ServerProperties 配置类所有和服务器有关的配置既以 server. 开头的配置。
关键组件
ServletWebServerFactoryAutoConfiguration 配置了一系列的工厂 Bean这些工厂 Bean 基于应用的依赖和属性进行条件化的配置。主要包括
TomcatServletWebServerFactoryJettyServletWebServerFactoryUndertowServletWebServerFactory
每个工厂都对应一个特定的 Servlet 容器实现它们提供了丰富的配置选项允许开发者定制容器的行为如端口号、SSL配置、会话设置等。
以TomcatServletWebServerFactory为例
TomcatServletWebServerFactory 是一个非常关键的类它负责为 Spring Boot 应用配置和创建内嵌的 Tomcat 服务器。这一工厂类使得开发者能够轻松地定制Tomcat 服务器的各种设置如端口号、SSL 配置、会话超时设置、以及其他多项服务器级别的配置。通过使用 TomcatServletWebServerFactory开发者可以在不牺牲 Spring Boot 应用简易性和速度的前提下享受到强大的 Tomcat 服务器定制功能。
ServletWebServerFactory会创建webServer的时机
我们倒着来看。
TomcatServletWebServerFactory 有 getWebServer() 方法是用来创建和配置 Tomcat Web 服务器的。 org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory#getWebServer 按住 Ctrl左键显示的是 ServletWebServerApplicationContext 的 createWebServer() 调用了 getWebServer 方法它检查 webServer 和 servletContext 是否为 null。如果都为 null那么它将创建一个新的 WebServer 实例并将其注册到 BeanFactory 中以便在需要时可以获取。同时它还会创建两个生命周期 bean,一个用于优雅地关闭 Web 服务器另一个用于启动和停止 Web 服务器。 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext#createWebServer 按住 Ctrl左键显示的是 ServletWebServerApplicationContext 的 onRefresh() 调用了 createWebServer() 方法onRefresh() 又是由 AbstractApplicationContext 调用既 Spring容器启动的时候找了个时机创建 webServer。 org.springframework.context.support.AbstractApplicationContext#onRefresh 关键特性
TomcatServletWebServerFactory 提供了以下几个关键特性来帮助开发者定制内嵌 Tomcat 服务器
端口配置可以设置 HTTP 和 HTTPS 的端口支持程序运行时动态更改端口。SSL配置支持 SSL/TLS 设置让开发者可以配置HTTPS安全连接。会话管理允许开发者定制会话超时时间、会话持久化机制等。错误页面可以定制错误页面来优化用户体验。连接器和协议定制支持对 Tomcat 连接器Connector和协议的高级定制包括线程池配置、连接超时设置等。
使用方式
在 Spring Boot 应用中通常不需要直接实例化 TomcatServletWebServerFactory。相反可以通过 application.properties 或 application.yml 文件进行配置或者通过编程方式定制 Tomcat 的特定行为。
通过配置文件
在application.properties或application.yml中添加 Tomcat 的配置例如
# application.properties
server.port8080
server.ssl.key-storeclasspath:keystore.jks
server.ssl.key-store-passwordpassword
server.ssl.keyStoreTypeJKS
server.servlet.session.timeout20m通过编程方式定制
如果需要更高级的定制可以创建一个配置类并注入 TomcatServletWebServerFactory 的 Bean示例如下
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
public class TomcatConfig {Beanpublic WebServerFactoryCustomizerTomcatServletWebServerFactory webServerFactoryCustomizer() {return factory - {factory.setPort(8080);// 其他定制...};}
}结论
ServletWebServerFactoryAutoConfiguration 类是 Spring Boot 自动配置内嵌 Servlet 容器的关键它极大地简化了开发和部署过程。通过灵活的配置选项开发者可以轻松定制容器的行为以满足不同的应用需求。随着 Spring Boot 3 的推出这一机制变得更加强大和灵活使得 Spring Boot 继续保持其作为现代 Java 开发的首选框架的地位。