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

为什么要问Servlet的初始化时间的更多相关文章

  1. C++vptr初始化时间

    给出如下代码段: #include <iostream> #include "stdio.h" using namespace std; class A { publi ...

  2. 从以下哪一个选项中可以获得Servlet的初始化参数。

    从以下哪一个选项中可以获得Servlet的初始化参数. A.Servlet B.ServletContext C.ServletConfig D.GenericServlet 解答:C servlet ...

  3. Servlet容器初始化IOC容器

    <!-- ServletContext参数,配置Ioc容器的xml文件名 --> <context-param> <param-name>contextConfig ...

  4. 谁再问Servlet的问题,我就亲自上门来教学了

    1. 概述 在这篇简短的文章中,我们将从概念上理解什么是servlet 和 servlet 容器以及它们是如何工作的. 同时,还能在请求.响应.会话对象.共享变量和多线程的上下文中看到它们的身影. 2 ...

  5. struts2訪问servlet的API

    1.struts作为控制器,正常非常多时候要訪问到servlet的API.经常使用功能:   (1).获取请求參数,控制界面跳转   (2).把共享数据存储于request,session,servl ...

  6. JavaWeb---通过ServletConfig获取Servlet的初始化参数

    package com.zyz; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import j ...

  7. Spring 4 官方文档学习(十一)Web MVC 框架之编码式Servlet容器初始化

    在Servlet 3.0+ 环境中,你可以编码式配置Servlet容器,用来代替或者结合 web.xml文件.下面是注册DispatcherServlet : import org.springfra ...

  8. Spark延长SparkContext初始化时间

    有些应用中可能希望先在driver上运行一段java单机程序,然后再初始化SparkContext用集群模式操作java程序返回值.从而避免过早建立SparkContext对象分配集群资源,使资源长时 ...

  9. Servlet之初始化参数和传递数据(ServletConfig,ServletContext )

    ServletConfig 容器初始化一个Servlet的时候,会为这个Servlet建一个唯一的Servletconfig的对象(Servlet的配置对象) 容器会从部署的描述文件(web.xml) ...

随机推荐

  1. git rebase小计(转)

    git rebase,顾名思义,就是重新定义(re)起点(base)的作用,即重新定义分支的版本库状态.要搞清楚这个东西,要先看看版本库状态切换的两种情况: 我们知道,在某个分支上,我们可以通过git ...

  2. Otter入门简介

    一.Otter简介 1.1  otter是什么? otter 译意: 水獭,数据搬运工 语言: 纯java开发 定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数 ...

  3. HttpApplication 对象的创建过程及HttpModule过滤器的内部实现过程

    最近通过Reflector学习了一下asp.net内部的原理,做做笔记,方便以后查阅. 先看下HttpApplication 对象的创建过程 从IHttpHandler applicationInst ...

  4. winform 客户端 HTTP协议与服务端通信以及解决中文乱码

    本来从来没有仔细研究过Http协议,今天因为公司业务需求,调试了半天,终于现在会Winform用Http协议与服务端通信了,其中常用的有POST和Get方式: 仔细看了人人网和新浪等大部分都是采用GE ...

  5. Ubuntu 解决:当执行`sudo apt-get update`命令时 出现的 “apt-get 404 Not Found Package Repository Errors” 问题

    Ubuntu 解决:当执行sudo apt-get update或者sudo apt-get install命令是出现的 "apt-get 404 Not Found Package Rep ...

  6. Hadoop的namenode和secondnamenode分开部署在不同服务器

    一.系统环境:  Hadoop 0.20.2.JDK 1.6.Linux操作系统 二.使用背景  网上关于Hadoop的集群配置,很多情况下,都是把namenode和secondnamenode部署在 ...

  7. Pig Latin JOIN (inner) 与JOIN (outer)的区别

    1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3. ...

  8. 301ReidrectPages中重复记录导致的500 server error

    在Umbraco平台开发一个系统时,遇到一个问题,报错500 server error, system is currently unable to handle this request. 按下F1 ...

  9. 26.【转载】挖洞技巧:绕过短信&邮箱轰炸限制以及后续

    邮箱轰炸可能对企业来说危害很小,但对用户危害很大.短信轰炸相比邮箱轰炸,带来的危害涉及到企业和用户. 那么这些问题都存在在哪些方面呢? ①:登录处 ②:注册处 ③:找回密码处 ④:绑定处 ⑤:活动领取 ...

  10. vim加亮和自动缩进

    修改/etc/vimrc 添加 set cindent syntax on