50、尚硅谷_SpringBoot_web开发-嵌入式Servlet容器启动原理

SpringBoot系列之集成jsp模板引擎 SpringBoot系列之集成jsp模板引擎 文章目录1、模板引擎简介2、环境准备3、外部Servlet容器4、源码原理简介 1、模板引擎简介 引用百度百科的模板引擎解释: 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。 在JavaEE领域有几中比较常用的模板引擎,分别是J... 阅读详情

5)、嵌入式Servlet容器启动原理;

什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat;

获取嵌入式的Servlet容器工厂:

1)、SpringBoot应用启动运行run方法

2)、refreshContext(context);SpringBoot刷新IOC容器【创建IOC容器对象,并初始化容器,创建容器中的每一个组件】;如果是web应用创建AnnotationConfigEmbeddedWebApplicationContext,否则:AnnotationConfigApplicationContext

3)、refresh(context);刷新刚才创建好的ioc容器;

public void refresh() throws BeansException, IllegalStateException {
   synchronized (this.startupShutdownMonitor) {
      // Prepare this context for refreshing.
      prepareRefresh();

      // Tell the subclass to refresh the internal bean factory.
      ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();

      // Prepare the bean factory for use in this context.
      prepareBeanFactory(beanFactory);

      try {
         // Allows post-processing of the bean factory in context subclasses.
         postProcessBeanFactory(beanFactory);

         // Invoke factory processors registered as beans in the context.
         invokeBeanFactoryPostProcessors(beanFactory);

         // Register bean processors that intercept bean creation.
         registerBeanPostProcessors(beanFactory);

         // Initialize message source for this context.
         initMessageSource();

         // Initialize event multicaster for this context.
         initApplicationEventMulticaster();

         // Initialize other special beans in specific context subclasses.
         onRefresh();

         // Check for listener beans and register them.
         registerListeners();

         // Instantiate all remaining (non-lazy-init) singletons.
         finishBeanFactoryInitialization(beanFactory);

         // Last step: publish corresponding event.
         finishRefresh();
      }

      catch (BeansException ex) {
         if (logger.isWarnEnabled()) {
            logger.warn("Exception encountered during context initialization - " +
                  "cancelling refresh attempt: " + ex);
         }

         // Destroy already created singletons to avoid dangling resources.
         destroyBeans();

         // Reset 'active' flag.
         cancelRefresh(ex);

         // Propagate exception to caller.
         throw ex;
      }

      finally {
         // Reset common introspection caches in Spring's core, since we
         // might not ever need metadata for singleton beans anymore...
         resetCommonCaches();
      }
   }
}

4)、 onRefresh(); web的ioc容器重写了onRefresh方法

5)、webioc容器会创建嵌入式的Servlet容器;createEmbeddedServletContainer();

6)、获取嵌入式的Servlet容器工厂:

EmbeddedServletContainerFactory containerFactory = getEmbeddedServletContainerFactory();

​ 从ioc容器中获取EmbeddedServletContainerFactory 组件;TomcatEmbeddedServletContainerFactory创建对象,后置处理器一看是这个对象,就获取所有的定制器来先定制Servlet容器的相关配置;

7)、使用容器工厂获取嵌入式的Servlet容器:this.embeddedServletContainer = containerFactory .getEmbeddedServletContainer(getSelfInitializer());

8)、嵌入式的Servlet容器创建对象并启动Servlet容器;

先启动嵌入式的Servlet容器,再将ioc容器中剩下没有创建出的对象获取出来;

IOC容器启动创建嵌入式的Servlet容器

7-1 链式基数排序 (20 分) 7-1 链式基数排序 (20 分) 实现链式基数排序,待排序关键字n满足1≤n≤1000,最大关键字数位≤5。 输入样例: 第一行输入待排序个数n(1≤n≤1000),再输入n个数(n的数位≤5)。 10 278 109 63 930 589 184 505 269 8 83 输出样例: 输出每趟分配-收集后链表中的关键字,趟数为序列中最大值的数位(如样例中930的数位为3),每行结尾有空格。 930 63 83 184 505 278 8 109 589 269 505 8 109 930 63 26 阅读详情

相关推荐

lighttools用透镜旋转手动创建菲尼尔透镜

学过很多软件,都没有留下痕迹,很多年之后只记得学过的软件常用的一些功能,稍微难一些的再次用起需要重新学,但如果留下点痕迹,重新再用就会很快。lighttools无意之中接触了,记一点点笔记吧。...

kingsai2012的博客 4334

Linux入门笔记-尚硅谷韩顺平-基础篇&实操篇

学习b站尚硅谷韩顺平老师的Linux入门教程时记录的知识点,视频教程中的案例演示不包含在本篇文章。本篇文章仅作为Linux常用命令、常见知识的参考手册

CYW2019_HUST的博客 2892

SAP S/4HANA 物料分类账(ML)/实际成本核算(Actual Costing)——底表全景 & CKMLCP 执行后数据变化

插入 ML 重估凭证行项目:Dr/Cr 库存科目(期末库存调整)、Dr/Cr COGS/消耗科目(消耗重估)、Cr/Dr ML 重估抵消科目(PRY/PRV 类逻辑)also STPRS/VERPR/PEINH/LBKUM 等(但 S/4 很多“真理”在 ACDOCA)MLPP / MLPPF / MLCR / MLCRF / MLCD / CKMLMV003/004 等。Material Ledger Document(行项目明细:收货/发票价差/结算写入/重估相关)间接(PUP在CKMLCR;

weixin_52203666的博客 587

尚硅谷嵌入式全套网课不限速下载

链接:https://pan.quark.cn/s/c5b723f913fd。点击链接或复制整段内容,打开「夸克APP」即可获取。「尚硅谷嵌入式全套教程」动作蒴桦缵豳藠多好/

太渊 1246

Python实战:用BM3D算法给老照片去噪(附完整代码+数据集)

本文详细介绍了如何使用Python和BM3D算法为老照片进行高效去噪。通过完整的代码实现和数据集,读者可以快速掌握图像去噪技术,包括环境配置、算法原理、参数调优及效果评估,帮助恢复珍贵老照片的清晰度。

weixin_29057237的博客 239

Ubuntu 24.04 部署 EMQX 5.8 开源版MQTT服务器:从零搭建到实战应用

本文详细指导如何在Ubuntu 24.04系统上部署EMQX 5.8开源版MQTT服务器。内容涵盖从环境准备、安装Erlang、下载安装包到启动服务的完整步骤,并提供了验证服务、配置网络防火墙以及通过WebSocket工具进行基础消息收发的实战方法,帮助用户快速搭建稳定、免费的物联网消息中间件。

weixin_29209825的博客 294

单片机资源合集

未来集市 800

【目标检测】基于yolov5的道路坑洼检测(附代码和数据集)

基于yolov5的道路坑洼检测(附代码和数据集)

学无止境、积少成多、厚积薄发 4621

49、尚硅谷_SpringBoot_web开发-嵌入式Servlet容器自动配置原理

4)、嵌入式Servlet容器自动配置原理; EmbeddedServletContainerAutoConfiguration:嵌入式的Servlet容器自动配置? @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) @Configuration @ConditionalOnWebApplication @Import(BeanPostProcesso...

八嘎兔 283

【WRF教程第3.5期】预处理系统 WPS 详解:以4.5版本为例

预处理系统 WPS 详解:以4.5版本为例

WW、forever的博客 1422

Synthesia技术浅析(四):自然语言处理

Synthesia 的自然语言处理(NLP)模块是其核心技术之一,涵盖了文本转语音(TTS)、情感分析以及多语言支持等多个方面。

m0_75253143的博客 1167

ubuntu系统操作简单介绍

文章目录Ubuntu的常用操作命令Ubuntu安装软件通过APP Store安装使用APT工具安装deb软件包安装自己下载程序源码编译安装其他安装方法文件系统结构根目录 /文件系统结构绝对路径和相对路径磁盘管理磁盘文件磁盘挂载与卸载,分区和格式化磁盘的挂载和卸载磁盘分区磁盘格式化压缩与解压缩Linux下常用的压缩格式Windows下7ZIP软件的安装gzip压缩工具bzip2压缩工具tar打包工具对tar.bz2进行压缩和解压缩对.tar.gz进行压缩和解压缩.rar格式.zip格式用户和用户组用户用户组

Moliam的博客 1836

十五、SAP-物料需求计划(MRP)

业务逻辑、功能讲解、图文解析、章节总结

m0_72403327的博客 1097

52、尚硅谷_SpringBoot_web开发-外部Servlet容器启动SpringBoot应用原理

原理 jar包:执行SpringBoot主类的main方法,启动ioc容器,创建嵌入式的Servlet容器; war包:启动服务器,服务器启动SpringBoot应用【SpringBootServletInitializer】,启动ioc容器; servlet3.0(Spring注解版): 8.2.4 Shared libraries / runtimes pluggability: 规则: ​ ...

八嘎兔 174

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

17、嵌入式Servlet容器

嵌入式Servlet容器

希望有点用 1019

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

尚硅谷springboot学习27-使用外置servlet容器

  嵌入式Servlet容器:应用打成可执行的jar   ​ 优点:简单、便携;   ​ 缺点:默认不支持JSP、优化定制比较复杂(使用定制器【ServerProperties、自定义EmbeddedServletContainerCustomizer】,自己编写嵌入式Servlet容器的创建工厂【EmbeddedServletContainerFactory】);   外置的Se...

QQ40153258的博客 200

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SpringBoot关于嵌入式servlet容器与外部servlet容器的启动原理的总结(基于Tomcat)

SpringBoot关于嵌入式servlet容器与外部servlet容器的启动原理的总结(基于Tomcat) 转载 具体参考:尚硅谷SpringBoot顶尖教程(springboot之idea版spring boot) 文章目录SpringBoot关于嵌入式servlet容器与外部servlet容器的启动原理的总结(基于Tomcat)嵌入式servlet容器外置的servlet容器对比总结 嵌入式servlet容器 SpringBoot应用启动,执行run方法 public static void

qq_62636613的博客 231

SpringBoot(上下合集)—尚硅谷—2018-03-19

视频链接 一.:(1~) 1::    1):     -1:     -2:     -3:     -4:     -5:    2):     -1:     -2:     -3:     -4:     -5:    3):     -1:     -2:     -3:     -4:     -5:    4):     -1:     -2:     -3:     -4:     -5:    5):     -1:     -2:     -3:     -4:     -

张老师的博客 744

尚硅谷-Spring Boot笔记

**一、**Spring Boot 入门 1、Spring Boot 简介 简化Spring应用开发的一个框架; 整个Spring技术栈的一个大整合; J2EE开发的一站式解决方案; 2、微服务 2014,martin fowler 微服务:架构风格(服务微化) 一个应用应该是一组小型服务;可以通过HTTP的方式进行互通; 单体应用:ALL IN ONE 微服务:每一个功能元素最终都是一个可独...

狂奔的蜗牛的博客 859

Spring Boot使用外部Servlet容器

更多信息: 本篇算是学习笔记 视频 尚硅谷 配置文件的信息 Spring Boot文档 编辑器:IntelliJ IDEA 2020.1 目录更多信息:使用外部Servlet容器创建项目将服务器整合到IntelliJ IDEA原理流程 使用外部Servlet容器 嵌入式Servlet容器 优点:简单、便捷 缺点:不支持JSP、优化定制比较复杂、自己编写嵌入式Servlet容器的创建工厂 解决方法:如果想要支持JSP,我们可以使用外部Servlet容器 外置的Servlet容器:外面安装Tomcat—应用

NorburyL 327

SpringBoot web--使用外置的Servlet容器(创建web jsp项目),启动SpringBoot应用原理(学习笔记22)

1、嵌入式Servlet容器(应用打成可执行的 jar 包):    优点:简单、便携    缺点:默认不支持JSP、优化定制比较复杂2、外置的Servlet容器:外面安装Tomcat,应用以 war 包的方式打包创建一个web项目:把服务器整合到 IDEA 中:创建index.jsp,测试一下:小结:    1、必须创建一个war项目,并创建目录结构    2、项目中多了一个 ServletIn...

yufang131的博客 738

Spring Boot注册servlet三大组件

更多信息: 本篇算是学习笔记 视频 尚硅谷 配置文件的信息 Spring Boot文档 编辑器:IntelliJ IDEA 2020.1 目录更多信息:原因三大组件的创建Servlet的创建ServletRegistrationBeanMyServerConfigFilter的创建FilterRegistrationBeanMyServerConfigListener的创建ListenerRegistrationBeanMyServerConfig总结例子使用其他嵌入式Servlet容器 原因 我们Sp

NorburyL 260

【视频分享】尚硅谷Java视频教程_SpringBoot视频教程

尚硅谷的Spring Boot视频教程出来了,博主拿到资源第一时间分享给大家,尚硅谷出品的质量还是很不错的,值得一看。SpringBoot是企业级开发的整体整合解决方案,特别用于快速构建微服务应用,旨在用最简单的方式让开发人员适应各种开发场景;本视频着重介绍SpringBoot的使用和内部原理;内容包含微服务概念、配置文件、日志框架的使用、web开发、Thymeleaf模板引擎、Docker容器技

嘟爷java超神学堂 3243

尚硅谷Spring Boot

01、入门-课程简介 02、入门-Spring Boot简介 03、入门-微服务简介 04、入门-环境准备 05、入门-springboot-helloworld 06、入门-HelloWorld细节-场景启动器(starter) 07、入门-HelloWorld细节-自动配置 08、入门-使用向导快速创建Spring Boot应用 09、配置-yaml简介 10、配置-yaml语法 11、配置-...

qq_36469210的博客 464

业余草尚硅谷Java视频教程_SpringBoot视频教程免费下载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/xmt1139057136/article/details/79831682 SpringBoot是企业级开发的整体整合解决方案,特别用于快...

weixin_34085658的博客 186

Spring Boot怎么样注册Servlet三大组件[Servlet、Filter、Listener]

前言 由于SpringBoot默认是以jar包的方式启动嵌入式的Servlet容器来启动SpringBoot的web应用,没有web.xml文件。 注册三大组件用以下方式 一、ServletRegistrationBean //注册三大组件 @Bean public ServletRegistrationBean myServlet(){ ServletRegistrationBean r...

梁同学与Android 270
上一篇: 49、尚硅谷_SpringBoot_web开发-嵌入式Servlet容器自动配置原理
下一篇: 51、尚硅谷_SpringBoot_web开发-使用外部Servlet容器&JSP支持
怪兽兔
博客等级 码龄19年 7粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值