当前位置: 首页 > news >正文

【五】springboot启动源码 - onRefresh

onRefresh 源码解析

Initialize other special beans in specific context subclasses.

核心是创建一个web服务容器(并未在这个方法启动)
在这里插入图片描述
createWebServer第182行,获取ServletWebServerFactory的具体实现
在这里插入图片描述
getWebServerFactory方法,通过ioc容器获取ServletWebServerFactory实现实例,在这里我指定的server服务是undertow
在这一步之前,ServletWebServerFactory是没有加入IOC容器的,在这里进行初始化
在这里插入图片描述
但是在bdMap中,之前通过自动装配,已经添加了org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration。

在这里插入图片描述
它是通过加载org.springframework.boot.autoconfigure.AutoConfiguration.imports文件,装载ServetWeb的自动配置类ServletWebServerFactoryAutoConfiguration
在这里插入图片描述
进入ServletWebServerFactoryAutoConfiguration,可以看到@Import引入的类,以及@EnableConfigurationProperties(ServerProperties.class),
在这里插入图片描述
ServerProperties用来获取服务相关的配置,如server.undertow.threads.io: 16
因为我们用的undertow,进入ServletWebServerFactoryConfiguration.EmbeddedUndertow
是ServletWebServerFactoryConfiguration的一个子类。以UndertowServletWebServerFactory作为ServletWebServerFactory的实现注入到IOC中
在这里插入图片描述
回到createWebServer方法-第184行,factory.getWebServer,通过Factory来获取webServer
在这里插入图片描述
在createManager过程中,还会调用ServletContextInitializer的实现onStartup,在这个回调,我们可以添加监听器、过滤器以及Servlet
在这里插入图片描述

回到createWebServer方法第199行,initPropertySources方法
用于Environment中MutablePropertySources中。key为servletContextInitParams的数据
在这里插入图片描述
替换前
在这里插入图片描述
替换后
在这里插入图片描述
总结:

  1. 做webServer容器初始化,还未启动
  2. 回调ServletContextInitializer的onStartup
http://www.lryc.cn/news/41847.html

相关文章:

  • 带你一文透彻学习【PyTorch深度学习实践】分篇——线性回归(训练周期:前馈、反馈、权重更新)
  • 【前端八股文】浏览器系列:性能优化——HTML、CSS、JS、渲染优化
  • Linux分文件编程:静态库与动态库的生成和使用
  • 技术人的管理学-业务管理
  • Dubbo的独门绝技,SPI实现原理分析
  • 单例模式,饿汉与懒汉
  • Prometheus监控实战之Blackbox_exporter黑盒监测
  • 【蓝桥杯集训·每日一题】AcWing 1051. 最大的和
  • 【Unity工具,简单应用】Photon + PUN 2,做一个简单多人在线聊天室
  • 程序员增加收入实战 让小伙伴们都加个鸡腿
  • GPIO四种输入和四种输出模式
  • ChatGPT能够改变时代吗?一点点思考
  • Markdown如何使用详细教程
  • HTML5庆祝生日蛋糕烟花特效
  • 算法套路四——反转链表
  • 多线程 (六) wait和notify
  • React--》状态管理工具—Mobx的讲解与使用
  • 有效的括号长按键入验证外星语词典字符的最短距离用栈实现队列
  • 《前端开发者的进阶之路》
  • 为什么说网络安全是风口行业?是IT行业最后的红利?
  • 使用shell 脚本,批量解压一批zip文件,解压后的文件放在以原zip文件名前10个字符的文件夹中的例子
  • 01 | Msyql系统架构
  • Linux命令---设备管理
  • 前端入门:HTML5+CSS3+JAAVASCRIPT
  • 【头歌实验】课外作业一:开通ECS及使用Linux命令
  • CMSIS-RTOS2 RTX5移植到GD32L233
  • [网络原理] 网络中的基本概念
  • BeanPostProcessor原理分析
  • 人工智能和网络安全,应该如何选择?
  • Flink预加载分区维表,实时更新配置信息