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底层原理】
经验总结扩展阅读
-
-
热水器不出热水怎么回事,电热水器不出热水怎么回事?
-
因为走丢了的哈士奇被送进了派出所,结果把派出所拆了,不愧为拆家王
-
葡萄干配一物,每天喝一杯,不贫血了,眼睛亮了,女人常喝不显老
-
-
-
-
-
-
-
相思梧叶影视情感说|《北辙南辕》:中年夫妻应该如何经营婚姻?不妨学学杜世均和司梦
-
涂抹 “一款三用”的平价口红,不挑肤色巨显白,素颜涂也能彰显高级感
-
怎么开心怎么过 致35岁的女人:往后你要怎么开心怎么过
-
2022年农历腊月初九搬新家吉日 2022年12月31日搬新家好不好
-
喝不完的奶粉可以放到下次喝吗,喝剩的奶粉可以下顿喝吗
-
-
2022年农历九月十六修坟吉日 2022年10月11日适合修坟吗
-
-
8月底,痛定思痛,爱恨清空,展望未来,高傲离去,真爱就在眼前
-
总有人在问 太多婚后的真爱,不过只是一时的激情,根本就当不得真