Web容器 初始化顺序

    在Web容器启动时,web.xml的加载顺序通常是这样的,挑选几个经常使用属性来讲,顺序以下java

context-param -> listener -> filter -> servlet web

listenerspring

    在java web规范中说明.按照listner,filter,servlet的顺序初始化. 其中listener是按照在web.xml中的申明顺序执行的.不存在并发的的状况并发

固然也有另一种说法:ide

    而当咱们想要在Listener初始化一些数据的时候,势必要把初始化的逻辑代码写在listener里面。在同一个web.xml里面写两个listener,它们的初始化顺序是不根据你写在web.xml里面的顺序而定的,就至关于说你要想在自定义Listener使用spring管理的bean那就会获得一个null值。那这个时候就要手动的去控制好listener的顺序。那若是不要使用spring管理的bean那也就没有这个必要去控制顺序。能够采用自定义的listener但这个listener不要去实现ServletContextListener,org.springframework.web.context.ContextLoaderListener contextInitialized(ServletContextEvent event)方法,在这个Override方法里面控制好执行顺序就能够了。spa

    注:若是实现了ContextLoaderListener类,并在web.xml中配置监听,则不要再使用spring的监听器,不然会重复加载code

经过实现ServletContextListener 接口的listenerxml

/** 
 * 当Servlet 容器启动Web 应用时调用该方法。在调用完该方法以后,容器再对Filter 初始化, 
 * 而且对那些在Web 应用启动时就须要被初始化的Servlet 进行初始化。 
 */  
contextInitialized(ServletContextEvent sce)   
  
  
/** 
 * 当Servlet 容器终止Web 应用时调用该方法。在调用该方法以前,容器会先销毁全部的Servlet 和Filter 过滤器。 
 */  
contextDestroyed(ServletContextEvent sce)

在Web 应用的生命周期中,ServletContext 对象最先被建立,最晚被销毁。对象

相关文章
相关标签/搜索