在Web服务器启动阶段做初始化

SpringBoot内置源码解析WebServer初始化过程 WebServer 初始化过程 在上一节中 Spring Boot 初始化了 WebServer 对应的工厂类。同时,我们也知道对应 Web容器的WebServer实现类有:TomcatWebServer、JettyWebServer和UndertowWebServer。 这节重点讲解这些 WebServer 是如何被初始化,又如何启动的。 WebServer 接口的源代码如下。 public interface WebServer { void start() throws WebServerE 阅读详情
如果希望在启动系统的时候,即完成SessionFactory实例的初始化。可以实现系统的WebListener,Web Listener是一个后台服务器程序,它回在系统启动的时候优先加载,用于为该Web应用提供后台支援。
Web Listener 需要实现ServletContextListener接口,实现该接口应该实现如下两个方法:
1, public void contextInitialized(ServletContextEvent sce)
2, public void contextDestroyed(ServletContextEvent sce)
上面的方法分别是web 应用启动时,应用关闭时得到的回调。

ServletContext 被 Servlet 程序用来与 Web 容器通信。例如写日志,转发请求。每一个 Web 应用程序含有一个Context,被Web应用内的各个程序共享。因为Context可以用来保存资源并且共享,所以我所知道的 ServletContext 的最大应用是Web缓存----把不经常更改的内容读入内存,所以服务器响应请求的时候就不需要进行慢速的磁盘I/O了。

ServletContextListener 是 ServletContext 的监听者,如果 ServletContext 发生变化,如服务器启动时 ServletContext 被创建,服务器关闭时 ServletContext 将要被销毁。

在JSP文件中,application 是 ServletContext 的实例,由JSP容器默认创建。Servlet 中调用 getServletContext()方法得到 ServletContext 的实例。

我们使用缓存的思路大概是:

  1. 服务器启动时,ServletContextListener 的 contextInitialized()方法被调用,所以在里面创建好缓存。可以从文件中或者从数据库中读取取缓存内容生成类,用 ervletContext.setAttribute()方法将缓存类保存在 ServletContext 的实例中。

  2. 程序使用 ServletContext.getAttribute()读取缓存。如果是 JSP,使用a pplication.getAttribute()。如果是 Servlet,使用 getServletContext().getAttribute()。如果缓存发生变化(如访问计数),你可以同时更改缓存和文件/数据库。或者你等变化积累到一定程序再保存,也可以在下一步保存。

  3. 服务器将要关闭时,ServletContextListener 的 contextDestroyed()方法被调用,所以在里面保存缓存的更改。将更改后的缓存保存回文件或者数据库,更新原来的内容。


布署 ServletContextListener

你实现(implements)了 ServletContextListener 编译后,把它放在正确的WEB-INF/classes目录下,更改WEB-INF目录下的 web.xml文件,在web-app节点里添加

<listener>
 <listener-class>MyServletContextListener</listener-class>
</listener>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SpringBoot启动原理 Spring Boot 的启动流程可以概括为:通过 `SpringApplication.run()` 初始化应用上下文,加载自动配置类,并启动内嵌 Web 服务器。核心机制包括:- @SpringBootApplication 注解组合了配置、组件扫描和自动配置;- 自动配置通过条件注解按需加载 Bean,依赖 `spring.factories` 定义;- Starter 简化依赖管理,内嵌容器实现开箱即用。实际开发中,可以通过优化组件扫描范围、禁用非必要配置、懒加载等方式提升启动速度。 阅读详情

相关推荐

PCB压合原理与工艺全流程深度解析

PCB压合是多层印制电路板制造中的核心工序,其本质并非简单物理叠加,而是高分子树脂流动、玻璃布应力释放、铜箔热膨胀及界面能调控的协同过程。理解压合原理,需掌握温度-压力-时间三维曲线动态关系;优化工艺流程,须兼顾叠板精度、热压参数匹配与冷却策略;关键影响因素如半固化片(PP)选型、铜箔表面处理、设备温场均匀性、结构对称性、环境湿度及操作手法,共同决定层间结合力、翘曲度与孔壁质量。本文围绕PCB压合原理、工艺流程、关键影响因素三大维度展开,融合IPC标准、实测数据与产线案例,为工艺工程师、NPI人员及设备维护

weixin_29191081的博客 253

《Java EE实战指南》11-03:ServletContextListener

ServletContextListener监听器。

西安极客联盟 773

ArcGIS基础:城市交通网络构建及设施服务分析(一):道路数据处理与拓扑操作

首先需要加载数据, 1:选择这个数据库:,右键导入,选择导入单个要素,弹出“要素类至要素类” 2:输出位置(导入的数据是CAD格式数据)。 3:输出要素类为道路。 4:字段只保留道路类型字段。 这个操作是分类合并各级道路数据。 1:通过属性选择各类道路数据。 2:比如此类都是“干道”。 3:编辑器下来,然后合并即可。 得到如图所示,需要用到三个字段。 上面这个操作是打断道路相交线。 1:选中所有数据。 2:找到高级编辑中的打断相交线。 3:确定即可。 下面进行拓扑检查,虽然我们已经进行合并和打断相交.

yuanYW7556的博客 2万+

Web项目初始化流程

本文只讨论使用web.xml配置文件启动web容器的方式 Web服务器启动时,部署在web容器上的项目即开始初始化 初始化流程如下:                          1.Web容器首先读取项目中web.xml配置文件中的两个节点:&lt;context-param&gt;&lt;listener&gt;节点并完成初始化                          2...

weixin_38753309的博客 976

避坑指南:汇川SV660N配合SOEM时,PDO映射与CiA402状态机那些容易出错的地方

本文深入解析汇川SV660N伺服驱动与SOEM主站在PDO动态映射和CiA402状态机切换中的常见问题,提供实战代码和调试技巧。重点解决PDO配置时序、状态机转换同步等关键难点,帮助工程师避免典型错误,实现稳定通信与控制。

weixin_30653023的博客 497

标准工时精益化管理:理论、方法与技巧

ECRS工时分析软件是一款综合性软件,包含了IE软件、IE改善软件、工业工程软件、作业改善/业务改善软件、动作分析软件、作业分析软件、ECRS分析法、ECRS改善手法、时间测量软件、工时测量软件、标准工时计算软件等功能。理论上,标准工时是指在标准的工作环境下,完成一道加工工序所需要花费的人工时间。不同企业、不同工序需要的辅助作业时间和损耗时间各不相同,因此企业需要灵活运用标准工时公式进行计算。总之,标准工时的制定需要综合考虑多种因素,企业可以灵活运用本文介绍的方法和技巧来优化制定流程。

VIOOVI_ECRS的博客 846

Java Servlet中Listener监听器的原理以及使用方式

详细介绍了Java Web Servlet中的Listener监听器的原理以及常见用法。

终生学习践行者 1983

Thompson Sampling vs UCB:5个真实业务场景下的算法选型指南

本文深入对比了Thompson Sampling与UCB算法在电商推荐、在线广告、医疗试验、金融定价和游戏调整五大真实业务场景下的表现。通过量化指标分析,为技术决策者提供了清晰的选型指南:Thompson Sampling凭借其概率匹配和贝叶斯框架,在需要快速收敛、处理冷启动及复杂约束的场景中通常更具优势;而UCB则在要求确定性、可解释性和理论保证的场景下表现更佳。

weixin_29181861的博客 153

Web服务器启动阶段做初始化

文章转自http://blog.youkuaiyun.com/kylejiang/article/details/5878286 如果希望在启动系统的时候,即完成SessionFactory实例的初始化。可以实现系统的WebListener,Web Listener是一个后台服务器程序,它回在系统启动的时候优先加载,用于为该Web应用提供后台支援。 Web Listener 需要实现ServletCon

黄彪博客 756

Webots+UR机械臂仿真全流程:手把手教你用Python实现Pick-and-Place轨迹规划

本文详细介绍了使用Webots和Python实现UR六自由度机械臂的Pick-and-Place轨迹规划全流程。从环境搭建、运动学正逆解计算到轨迹规划实战技巧,涵盖工业场景中的关节补偿、末端校准等实际问题解决方案,帮助开发者快速掌握机械臂精准控制技术。

weixin_29083649的博客 282

Unity 佳能SDK 及数据获取

3. 把CameraControl 下面只要是绿色的 .cs 文件都复制到Unity 中。1. 填写信息跟官方申请SDK,大概1-2个工作日会邮件回复你。2. 将SDK这两个文件放到 Unity Plugins文件夹。

我知道你很急,但是路要一步步走 1475

web服务器启动阶段解析的web.xml文件,做了什么?

web服务器启动阶段解析的web.xml文件,做了什么? 服务器启动阶段会解析各个webapp中的web.xml文件,做了什么? 在web容器中有这样一个集合 Map<String, String> key value --------------------------------------------------------- /login cn.qkmango.javaweb.servlet.LoginServlet /delete

芒果小洛 246

二十一、SAP-库存管理

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

m0_72403327的博客 1808

web服务器启动阶段实例化Servlet对象

web服务器启动阶段实例化Servlet对象 如希望在web服务器启动阶段实例化Servlet对象,需要在web.xml文件中进行相关的配置,例如: 在servlet标签中使用load-on-startup标签 注意:使用load-on-startup标签,数字越小,优先级越高 <servlet> <servlet-name>hello</servlet-name> <servlet-class>Hello</servlet-class&

芒果小洛 425

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

说说 Springboot 的启动流程?

Spring Boot 的启动流程是一个从初始化到环境准备,再到组件扫描与自动配置,最后到 Bean 初始化与依赖注入,以及应用启动完成的完整过程。在这个过程中,Spring Boot 充分利用了 Spring 框架的核心特性,如依赖注入、面向切面编程等,同时提供了自动配置、组件扫描等便捷功能,大大简化了 Spring 应用的开发和部署。

篱笆院的狗的博客 1067

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Spring Boot 启动流程源码浅析:从 main 方法到容器初始化

Spring Boot 凭借“一键启动”的特性极大简化了 Spring 应用的开发,但其背后隐藏着复杂的容器初始化逻辑。 注解仅是入口,真正的启动流程涉及应用上下文创建、自动配置加载、Bean 实例化、嵌入式服务器启动等核心环节。本文将从 方法的 出发,逐行拆解源码,揭示 Spring Boot 如何从一行代码到完整运行的 Web 容器。早期 Spring 应用需手动配置 或 JavaConfig,通过 初始化容器,步骤繁琐且易出错:Spring Boot 提出“约定优于配置”,通过 类封装启动逻

走向CTO的路上... 727

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【SpringBoot从初学者到专家的成长06】SpringBoot服务的启动过程

Spring Boot启动过程分为多个阶段:1)初始化SpringApplication实例并创建应用上下文;2)构建环境配置;3)初始化Spring容器并加载bean定义;4)执行自动配置;5)实例化bean并执行初始化方法;6)对于Web应用,启动内嵌服务器;7)完成应用启动;8)注册关闭钩子。整个过程实现了从环境准备到服务运行的完整生命周期管理。

低音钢琴的专栏 885

三分钟了解 SpringBoot 的启动流程

背景:最近有位开发同学说面试被问到Spring Boot 的启动流程,以及被问到Spring Boot 的嵌入式Web容器是什么时候加载的。如何加载的。是怎么无缝切换的。这些问题,其实回答起来也是比较复杂的。我们今天就从入口,逐渐向下看下执行流程,来试着回答一下前面这两个问题。后面关于SpringBoot 的web容器可以无缝随意切换为jetty,undertow..这个问题的回答涉及到Spring Boot是如何设计WebServer的。我们后续专门讲解一下。

qq_45635347的博客 995

使用web.xml配置Web应用之初始化和预加载servlet和JSP页面

本节讨论如何控制servlet和JSP页面的启动行为。具体说来,本节将解释如何分配初始化参数,如何在servlet和JSP页面加载时服务器的生命周期间进行修改。 一、分配servlet初始化参数 可以通过init-param元素(包含param-name和param-value这两个子元素)来为servlet提供初始化参数。例如,在下面的示例中,如果通过http://host/webApp

歆萌的专栏 1万+

springboot的启动流程核心原理

核心驱动是入口,是容器初始化核心;自动配置核心加载中的自动配置类;Web 服务器启动:嵌入式服务器(Tomcat)在阶段通过自动配置类启动,无需外部部署;扩展灵活:通过等扩展点,可轻松添加自定义逻辑;配置优先级:命令行参数 > 系统环境变量 > 配置文件 > 默认配置。Spring Boot 的启动流程本质是“封装 Spring 容器初始化流程 + 自动配置 + 嵌入式服务器启动”,通过简化配置、自动整合依赖,实现 “开箱即用”。

2401_89221704的博客 872

请简述Filter生命周期的各个阶段。

Filter的生命周期可分为创建、执行、销毁三个阶段。 1.创建阶段:Web服务器启动的时候会创建Filter实例对象,并调用init()方法,完成对象的初始化。 2.执行阶段:当客户端请求目标资源时,服务器会筛选出符合映射条件的Filter,并按照类名的的先后顺序依次执行doFilter() 方法。3.销毁阶段:服务器关闭时,Web服务器调用destroy()方法销毁Filter对象。...

m0_67668432的博客 4507

SpringBoot 的启动原理

SPI 机制:通过加载初始化器、监听器、自动配置类,实现 "插件化" 扩展。事件驱动:通过在启动各阶段发布事件(如),允许监听器介入启动过程。自动配置:在refresh()阶段,通过加载中的自动配置类(如),结合条件注解实现按需配置。内嵌容器:通过扩展点创建内嵌 Web 服务器(Tomcat 等),无需外部容器部署。通过以上机制,SpringBoot 实现了 "零配置" 启动,大幅简化了 Spring 应用的开发与部署。

xiaoye3708的博客 871

SpringBoot中内置Web服务器的过程:

在创建SpringBootApplication对象阶段有一个步骤是根据classpath下存不存在该对应的类来推断web服务的类型,他首先是判断是否为REACTIVE类型(响应式编程),然后判断是否为NONE类型(不属于web服务),如果都不是上述两者那么就是属于servlet这种web服务了。由于我们引入了spring-boot-stater-web这个依赖,没有引入REACTIVE相关的依赖所以,最后的web服务类型就是Servlet这种服务类型。

wu137789的博客 358

【Atlas】 Atlas 的启动流程中各组件的初始化顺序是怎样的?

Apache Atlas 2.4.0 启动流程解析 摘要 Apache Atlas 2.4.0 的启动流程具有严格的组件初始化顺序,这对元数据管理至关重要。文章通过机场准备航班的类比,形象说明了Atlas启动的阶段性特点:先初始化基础设施(HBase/Solr/Kafka),再加载核心服务(Type System/Entity Service),最后启动业务处理(REST API/Hook)。 启动流程主要分为两个阶段: 基础设施初始化:包括配置加载验证、系统属性设置,重点关注存储后端和索引后端的配置检查

九师兄 157
上一篇: WebSphere Application Server诊断和调优 二
下一篇: 通过读取配置文件封装数据库连接
kylejiang
博客等级 码龄23年 0粉丝 19原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值