常见问题:Web/Servlet生命周期与Spring Bean生命周期

Servlet生命周期

init()初始化阶段

  • Servlet容器加载Servlet(web.xml中有load-on-startup=1;Servlet容器启动后用户首次向Servlet发请求;Servlet类文件被更新后重新装载)
  • Servlet容器创建一个Servlet实例并调用init()方法

service()处理客户端请求阶段

  • 客户发送请求
  • Servlet产生一个新的线程
  • Servlet创建特定于请求的ServletRequest, ServletResponse
  • 调用service()方法对请求进行响应,如HttpServlet的doPost,doGet

destroy()终止阶段

web应用终止/Servlet容器终止运行/Servlet重新装载Servlet实例时,会调用Servlet的destroy()方法。

Spring Bean生命周期

  • Bean实例化
  • 设置对象属性(IOC注入)
  • 检查Aware相关接口并设置相关依赖
  • BeanPostProcess前置处理
  • 检查是否是InitializingBean以决定是否调用afterPropertiesSet
  • 检查是否有自定义的init-method(配置文件中可以定义)
  • BeanPostProcess后置处理
  • 注册Destruction相关回调接口
  • Bean准备就绪
  • 使用
  • 调用DispostbleBean的destroy来销毁Bean
  • 调用定制的销毁方法
posted @   CieloSun  阅读(746)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示