嵌入式 Servlet 容器启动原理|学习笔记

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 快速学习嵌入式 Servlet 容器启动原理

开发者学堂课程【SpringBoot快速掌握 - 核心技术嵌入式  Servlet  容器启动原理】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/612/detail/9262


嵌入式  Servlet  容器启动原理

内容介绍

一、原理简介

二、实操演示

 

一、原理简介

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

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

2  、refreshContext(context);SpringBoot  刷新  IOC  容器【创建  IOC  容器对象,并初始化容器,创建容器中的每一个组件】﹔

如果是 web 应用创建AnnotationConfigEmbeddedWebApplicationContext,否则:

AnnotationConfigApplicationContext

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

部分代码如下:

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 wel/ might not ever need metadata for singleton beans anymore. ..resetCommoncaches( );

}

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  容器工厂:EmbeddedServletContainerFactorycontainerFactory=getEmbeddedServletContainerFactory();

 ioc 容器中获取 EmbeddedServletContainerFactory 组件;

TomcatEmbeddedServletContainerFactory  创建对象,后置处理器一个是这个对象,就获取所有的定制器来先定利  Servlet  容器的相关配置;

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

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

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

 

 

二、实操演示

MyServerConfig 部分代码展示:

@Bean

public ServletListenerRegistrationBean myListener(){

ServletListenerRegistrattionBean registrationBean = new Servletreturn registrationBean;

}

//配置嵌入式的  servlet 容器 @Bean

public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer(){

return new EmbeddedServletContainerCustomizer() {

//r定制嵌入式的  Servlct 容器相关的规则

@Override

public void customize(ConfigurableEmbeddedServletContainer container);

}

}

相关文章
|
3月前
|
Docker 容器
Docker学习笔记三:如何运行一个容器?
Docker学习笔记三:如何运行一个容器?
Docker学习笔记三:如何运行一个容器?
|
3月前
|
分布式计算 Java Linux
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
Docker 是一套构建在 Linux 内核之上的高级工具,旨在帮助开发人员和运维人员更轻松地交付应用程序和依赖关系,实现跨系统和跨主机的部署。使用安全且轻量级的容器环境来实现这一目标。容器可以手动创建,也可以通过编写 Dockerfile 自动创建。开发人员和运维人员可以将应用程序及其依赖打包到容器中,实现应用程序的可移植性和环境一致性。
120 5
【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(Dockerfile使用手册)
|
30天前
|
关系型数据库 MySQL Nacos
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
48 1
|
6月前
|
Java 应用服务中间件 容器
25 SpringBoot使用外置的Servlet容器
25 SpringBoot使用外置的Servlet容器
23 0
|
2月前
|
网络协议 前端开发 Java
异步Servlet学习笔记(一)
异步Servlet学习笔记(一)
|
3月前
|
存储 运维 Linux
精彩推荐 | 【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(实战技术总结)
在使用Docker时,管理维护工作可能会显得复杂。然而,实际上,Docker提供了许多便捷且人性化的工具,这些工具的使用技巧可以大大简化维护工作,并提升效率。通过掌握这些技巧,你不仅能够更轻松地管理Docker环境,还能展现出专业的能力。接下来我们就给大家介绍一下对于我在工作当中对于Docker容器使用的技术实战总结
48 2
精彩推荐 | 【深入浅出Docker原理及实战】「原理实战体系」零基础+全方位带你学习探索Docker容器开发实战指南(实战技术总结)
|
3月前
|
存储 运维 Linux
探索容器化技术:Docker的原理与应用
在当今快节奏的软件开发环境中,容器化技术成为了一种重要的工具,其中最为流行和广泛使用的是Docker。本文将深入探讨Docker的原理和使用,包括容器化概念、镜像管理、容器编排等内容,帮助读者更好地理解和应用这项技术。
50 0
|
3月前
|
存储 Linux 开发者
探索容器化技术:揭秘Docker的原理与应用
在当今快节奏的软件开发环境中,容器化技术成为了关键的工具。本文将深入探索Docker作为一种常见的容器化解决方案的原理与使用方法,并讨论其在现代应用开发中的重要性与优势。
|
4月前
|
Kubernetes Docker 容器
Kubernetes学习笔记-Part.10 容器回退
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
48 0
|
4月前
|
Java 应用服务中间件 容器
SpringBoot - 嵌入式容器配置与修改
SpringBoot - 嵌入式容器配置与修改
46 1