SpringBoot嵌入式Web容器如何使用

嵌入式 web 容器:应用中内置服务器(tomcat),不用在外部配置服务器了

原理

SpringBoot 项目启动,发现是 web 应用,引入 web 场景包 —– 如:Tomcat

web 应用创建一个 web 版的 IOC 容器 ServletWebServerApplicationContext

ServletWebServerApplicationContext 启动的时候寻找 ServletWebServerFactory (Servlet 的 web 服务器工厂,用于生产 Servlet 服务器)

ServletWebServerFactory 底层默认有很多 Web 服务器工厂

SpringBoot嵌入式Web容器如何使用

底层会自动配置好 ,自动配置类 ServletWebServerFactoryAutoConfiguration

ServletWebServerFactoryAutoConfiguration 导入 ServletWebServerFactoryConfiguration 工厂配置类

ServletWebServerFactoryConfiguration.class

SpringBoot嵌入式Web容器如何使用

动态判断系统中导入了那个web服务器配置包

如果导入 Tomcat 依赖,会自动放一个 Tomcat 服务器工厂, TomcatServletWebServerFactory 为我们创建出 Tomcat 服务器工厂

Tomcat 底层支持如下服务器

SpringBoot嵌入式Web容器如何使用

@Overridepublic WebServer getWebServer(ServletContextInitializer... initializers) {if (this.disableMBeanRegistry) {Registry.disableRegistry();}Tomcat tomcat = new Tomcat();File baseDir = (this.baseDirectory != null) ? this.baseDirectory : createTempDir("tomcat");tomcat.setBaseDir(baseDir.getAbsolutePath());Connector connector = new Connector(this.protocol);connector.setThrowOnFailure(true);tomcat.getService().addConnector(connector);customizeConnector(connector);tomcat.setConnector(connector);tomcat.getHost().setAutoDeploy(false);configureEngine(tomcat.getEngine());for (Connector additionalConnector : this.additionalTomcatConnectors) {tomcat.getService().addConnector(additionalConnector);}prepareContext(tomcat.getHost(), initializers);return getTomcatWebServer(tomcat);}

登录后复制

总结: 所谓内嵌服务器,就是把我们手动启动服务器的方法放进框架中了。

应用

1. 切换Web服务器

排除 tomcat 服务器,导入 undertow 依赖

                   org.springframework.boot            spring-boot-starter-web                                                org.springframework.boot                    spring-boot-starter-tomcat                                                        org.springframework.boot            spring-boot-starter-undertow        

登录后复制

2. 定制服务器规则

方法一: 修改 server 下的配置文件

ServerProperties.class

SpringBoot嵌入式Web容器如何使用

server.undertow.accesslog.dir=/tmp

方法二: 自定义 ConfigurableServletWebServerFactory

方法三: 自定义 ServletWebServerFactoryCustomizer 定制化器

作用: 将配置文件的值,与 ServletWebServerFactory 绑定

SpringBoot 设计: Customizer 定制化器,可以定制 XXX 规则

以上就是SpringBoot嵌入式Web容器如何使用的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2603256.html

(0)
上一篇 2025年3月6日 19:38:52
下一篇 2025年3月2日 11:52:30

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论