常见问题: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 @ 2019-09-24 09:52  CieloSun  阅读(741)  评论(0编辑  收藏  举报