private void postProcessBeforeInitialization(WebServerFactory webServerFactory) { // 找到WebServerFactoryCustomizer的Bean LambdaSafe.callbacks(WebServerFactoryCustomizer.class, getCustomizers(), webServerFactory) // 标记日志用的类 .withLogger(WebServerFactoryCustomizerBeanPostProcessor.class) // 调用customize方法,传入webServerFactory .invoke((customizer) -> customizer.customize(webServerFactory));}
- postProcessBeforeInitialization中会调用WebServerFactoryCustomizer类customize方法,在系统中的唯一实现:ServletWebServerFactoryCustomizer的customize方法 。
- customize把配置中的内容设置到ConfigurableServletWebServerFactory对象中 。他的实现TomcatServletWebServerFactory在启动的时候就会有值!
@Overridepublic void customize(ConfigurableServletWebServerFactory factory) { PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull(); map.from(this.serverProperties::getPort).to(factory::setPort); map.from(this.serverProperties::getAddress).to(factory::setAddress); map.from(this.serverProperties.getServlet()::getContextPath).to(factory::setContextPath); map.from(this.serverProperties.getServlet()::getApplicationDisplayName).to(factory::setDisplayName); map.from(this.serverProperties.getServlet()::isRegisterDefaultServlet).to(factory::setRegisterDefaultServlet); map.from(this.serverProperties.getServlet()::getSession).to(factory::setSession); map.from(this.serverProperties::getSsl).to(factory::setSsl); map.from(this.serverProperties.getServlet()::getJsp).to(factory::setJsp); map.from(this.serverProperties::getCompression).to(factory::setCompression); map.from(this.serverProperties::getHttp2).to(factory::setHttp2); map.from(this.serverProperties::getServerHeader).to(factory::setServerHeader); map.from(this.serverProperties.getServlet()::getContextParameters).to(factory::setInitParameters); map.from(this.serverProperties.getShutdown()).to(factory::setShutdown); for (WebListenerRegistrar registrar : this.webListenerRegistrars) { registrar.register(factory); } if (!CollectionUtils.isEmpty(this.cookieSameSiteSuppliers)) { factory.setCookieSameSiteSuppliers(this.cookieSameSiteSuppliers); }}ServletWebServerFactoryCustomizer这个Bean是哪里的?
- 在我们自动配置类ServletWebServerFactoryAutoConfiguration中定义 。
@Beanpublic ServletWebServerFactoryCustomizer servletWebServerFactoryCustomizer(ServerProperties serverProperties, ObjectProvider<WebListenerRegistrar> webListenerRegistrars, ObjectProvider<CookieSameSiteSupplier> cookieSameSiteSuppliers) { return new ServletWebServerFactoryCustomizer(serverProperties,webListenerRegistrars.orderedStream().collect(Collectors.toList()),cookieSameSiteSuppliers.orderedStream().collect(Collectors.toList()));}
【【Spring boot】整合tomcat底层原理】
经验总结扩展阅读
-
算命婚姻,2020年下元节后一天是安葬逝者吉日吗,安葬逝者注意什么?
-
蜜蜡对身体有什么好处,佩戴蜜蜡对身体有什么好处 戴蜜蜡有什么好处
-
-
微信聊天照片误删可以恢复吗,微信上好友发的照片误删了怎么恢复
-
-
化妆品|开皮肤管理店,自己不够专业,自主学习没有头绪!
-
-
65岁爷爷常去集市买的3款白酒,当时没钱不常喝,现在很难再见了
-
-
为什么第一眼喜欢的人,做不了朋友?眼缘这种东西,就是很神奇
-
抗癌 获得5倍抗癌功效!把这种食材加入小吃中,抗癌、减肥、护心效果翻倍!
-
一本情感簿|《闯关东》里的“厄运体”姑娘:这个苦命女人,真的是“作”?
-
-
-
-
-
植物大战僵尸怎么重新玩(植物大战僵尸通关后重新打)
-
-
-
在快节奏生活状态下 在快节奏生活状态下,一眼定恋情的人越来越多