Servlet的init方法到底是在什么时候调用的?

j2ee specification和java doc中有以下说明

如果load-on-startup设置为>=0, 部署的时候就会调用。  如果多个servlet的load-on-startup设置的值一样,由容器自己确定这几个servlet的初始化顺序。

如果load-on-startup没有设置,或者为负数,那么由容器自行决定,通常是在第一次Request请求时调用的,而且在doSerivce之前只调用一次

参考: http://guoliangqi.iteye.com/blog/670710

然后这个问题牵扯到SpringMVC的DispatchServlet初始化的时间,进而又能说到spring IOC容器中bean的初始化时间,初始化时的内容和过程 。。。

场景1. >>>> 普通war包使用web.xml, DispatcherServlet的init()方法在HttpServletBean中定义,启动时初始化(loadOnStartup必须设置) ,最后调用到WebApplicationContext.onRefresh

RootApplicationContext是在DispatcherServlet初始化的过程中创建的

场景2. >>>> SpringBoot嵌入式WebContainer中,  DispatcherServlet的loadOnStartup没有设置,是在首次接收Request时初始化的

RootApplicationContext是在SpringBoot main方法中的SpringApplication.run()时创建的

//TODO dispatcherServlet初始化过程 。。。

其他参考:https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-config-advanced-xml

测试代码:  https://files.cnblogs.com/files/yszzu/tamix.zip

最新文章

  1. NVIDIA CuDNN 安装说明
  2. HDOJ 2082 找单词 (母函数)
  3. linux中cron用法
  4. POJ 2110 Mountain Walking 二分+bfs
  5. C/C++软件静态测试现状
  6. java TCP并发实现文件上传---转载(PS:适合java1.6之前)
  7. Spring框架中整合JUnit单元测试的方法
  8. 数控G代码编程详解大全
  9. 程序员之殇 —— One program, One king (血月)
  10. fabric.js和高级画板
  11. create-keyframe-animation-js实现css3动画
  12. 仿微信未读RecyclerView平滑滚动定位效果
  13. HTTPS加密那点事-对称、非对称加密、数字证书
  14. Python Faker的使用(1):基础使用方法与函数速查,生成随机数据
  15. Fiddler 会话过滤功能
  16. Python selectors实现socket并发
  17. web自动化测试---web页面元素的定位
  18. POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解
  19. bootstrap1.2
  20. Orchard之模版开发

热门文章

  1. 系列文章--打造自己的MVC框架
  2. [转]SCSS 和 SASS 和 HAML 和CoffeeScript
  3. spring IOC 注解@Required
  4. 使用Azure CLI实现自动关闭Azure虚拟机的脚本
  5. css基础知识一
  6. 对spring、AOP、IOP的理解 (转)
  7. DotNetBar 第三方控件使用
  8. Spring 3.x 企业引用开发实战(陈雄华/林开雄)
  9. Mysql 增量备份和全量备份
  10. linux-java环境安装以及ssh