zoukankan      html  css  js  c++  java
  • 为什么要问Servlet的初始化时间

    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

  • 相关阅读:
    MyEclipse配置DataBase Explorer
    Eclipse 如何设置注释的模板
    游戏开发技术
    static_cast 与reinterpret_cast
    一个人的成功取决于晚上的8点至10点经典语录必读
    发送消息给线程
    转载ofstream和ifstream详细用法
    Effective STL笔记
    Making your C++ code robust
    TGA文件
  • 原文地址:https://www.cnblogs.com/yszzu/p/9351302.html
Copyright © 2011-2022 走看看