`
ddlry521
  • 浏览: 24669 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

spring 加载顺序

阅读更多
web.xml文件加载顺序

一、
     1 、启动一个 WEB 项目的时候, WEB 容器会去读取它的配置文件 web.xml ,读取 <listener> 和 <context-param> 两个结点。
     2 、紧急着,容创建一个 ServletContext ( servlet 上下文),这个 web 项目的所有部分都将共享这个上下文。
     3 、容器将 <context-param> 转换为键值对,并交给 servletContext 。
     4 、容器创建 <listener> 中的类实例,创建监听器。

二、
      load-on-startup 元素在 web 应用启动的时候指定了 servlet 被加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或是这个元素不存在,那么容器会在该 servlet 被调用的时候,加载这个 servlet 。如果值是正整数或零,容器在配置的时候就加载并初始化这个 servlet ,容器必须保证值小的先被加载。如果值相等,容器可以自动选择先加载谁。 在 servlet 的配置当中, <load-on-startup>5</load-on-startup> 的含义是: 标记容器是否在启动的时候就加载这个 servlet 。 当值为 0 或者大于 0 时,表示容器在应用启动时就加载这个 servlet ; 当是一个负数时或者没有指定时,则指示容器在该 servlet 被选择时才加载。 正数的值越小,启动该 servlet 的优先级越高。

三、
      在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰。
      首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter 。最终得出的结论是: listener -> filter -> servlet
同时还存在着这样一种配置节: context-param ,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param 配置节可写在任意位置,因此真正的加载顺序为: context-param -> listener -> filter -> servlet
      对于某类配置节而言,与它们出现的顺序是有关的。以 filter 为例, web.xml 中当然可以定义多个 filter ,与 filter 相关的一个配置节是 filter-mapping ,这里一定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言, filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。 web 容器启动时初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时, filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。
      servlet 同 filter 类似 ,此处不再赘述。
      由此,可以看出, web.xml 的加载顺序是: context-param -> listener -> filter -> servlet ,而同个类型之间的实际程序调用的时候的顺序是根据对应的 mapping 的顺序进行调用的
分享到:
评论

相关推荐

    spring加载顺序讨论

    本文将详细探讨Spring加载顺序,并结合`@PostConstruct`、`构造方法`以及`@Autowired`等关键注解进行深入解析。 首先,Spring容器在启动时会读取配置文件(如XML或Java配置类),根据配置信息创建Bean的定义。Bean...

    spring的bean加载顺序样例项目

    在Spring框架中,Bean的加载顺序是一个重要的概念,它涉及到Spring容器如何管理和初始化Bean的过程。在"spring的bean加载顺序样例项目"中,我们可以通过分析和实验来深入理解这一主题。下面将详细阐述Spring Bean的...

    Spring Bean 加载顺序 .

    在Spring框架中,Bean的加载顺序是理解Spring IoC(Inversion of Control,控制反转)容器工作原理的关键部分。这个过程涉及到Bean定义的解析、实例化、初始化等多个步骤。让我们详细探讨Spring Bean加载顺序的各个...

    Spring+SpringMVC配置加载顺序1

    Spring 和 SpringMVC 的配置加载顺序是理解这两个框架协同工作的重要方面。首先,DispatcherServlet 是 SpringMVC 的核心组件,它扮演着请求分发者的角色,确保请求被正确地路由到相应的处理器。DispatcherServlet ...

    web.xml文件中配置(servlet, spring, filter, listenr)的加载顺序

    ### web.xml文件中配置(servlet, spring, filter, listener)的加载顺序 在Java Web应用开发中,`web.xml`文件是整个Web应用程序的核心配置文件之一,它定义了Servlet容器如何启动、初始化以及配置各个组件如...

    详解Spring Boot 配置加载顺序及属性加载顺序

    Spring Boot 配置加载顺序及属性加载顺序详解 Spring Boot 是一个流行的 Java 框架,用于快速构建基于 Spring 的应用程序。在 Spring Boot 中,配置加载顺序及属性加载顺序是一个非常重要的概念。我们可以通过多种...

    让spring解决控制springboot中bean的加载顺序的问题.docx

    在Spring Boot应用中,控制Bean的加载顺序是一个关键的议题,尤其是在处理复杂依赖关系或需要在特定时刻执行初始化操作的场景。Spring Boot遵循"约定优于配置"的理念,简化了配置,但同时也带来了需要手动干预Bean...

    详解Spring 中如何控制2个bean中的初始化顺序

    Spring 中控制 2 个 bean 的初始化顺序 在 Spring 框架中,控制多个 bean 的初始化顺序是一个常见的问题。本篇文章将详细介绍如何控制 2 个 bean 的初始化顺序,提供了多种实现方式,并分析了每种方式的优缺。 ...

    如何加载jar包中的spring配置文件

    在Spring MVC项目中,加载jar包中的Spring配置文件是一个常见的需求,特别是在进行SSM(Spring、Spring MVC、MyBatis)整合时。...记得根据项目的具体需求调整加载顺序和方式,以实现最佳的配置管理。

    springboot配置文件的加载顺序解析

    SpringBoot配置文件的加载顺序解析 本文主要介绍了SpringBoot配置文件的加载顺序解析,通过实践示例代码详细介绍了配置文件的加载顺序,帮助读者更好地理解和应用SpringBoot配置文件的加载机制。 一、SpringBoot...

    SpringBoot内部外部配置文件加载顺序解析

    SpringBoot内部外部配置文件加载顺序解析 SpringBoot框架中,配置文件的加载顺序是一个非常重要的topic。了解配置文件的加载顺序,可以帮助我们更好地管理和使用配置文件,提高项目的可维护性和可扩展性。 首先,...

    web.xml加载顺序与web.xml常用节点解析

    理解`web.xml`的加载顺序和各个节点的作用对于开发和维护高质量的Web应用至关重要。 1. **加载顺序**: - 当应用服务器启动并加载Web应用程序时,首先读取`web.xml`文件。 - 首先解析的是`&lt;context-param&gt;`节点,...

    spring boot 第三方jar包抽离方案

    #### 2.1 Spring Boot外部加载jar包启动 Spring Boot允许通过`-Dloader.path`参数加载外部lib目录下的jar包。例如,执行`java -Dloader.path="lib/" -jar app.jar`即可启动应用,并使用lib目录中的jar包。 #### ...

    Spring bean 加载执行顺序实例解析

    Spring bean 加载执行顺序实例解析 在 Spring 框架中,Bean 的加载和执行顺序是一个非常重要的概念。今天,我们将通过一个实例来解析 Spring bean 加载执行顺序,了解 Spring 中 Bean 的生命周期。 首先,让我们来...

    springboot 的配置文件加载顺序

    springboot 的配置文件加载顺序 https://blog.csdn.net/dearmite/article/details/131045230 本系列校训 用免费公开视频,卷飞培训班哈人!打死不报班,赚钱靠狠干! 只要自己有电脑,前后项目都能搞!N年苦学无人...

    spring源码合集spring源码合集

    理解这一过程有助于我们优化应用的初始化性能,合理设计Bean的加载顺序,以及更好地处理不同作用域的Bean。 4. **MyBatis源码解析**:尽管"19-MyBatis源码—SQL操作执行流程源码深度剖析-徐庶"和"12-Spring之整合...

    浅谈SpringBoot2.4 配置文件加载机制大变化

    这是因为配置文件非常灵活,可以在当前文件启用其他配置文件,文档加载顺序不固定。 三、文档排序 从 Spring Boot 2.4 开始,加载 Properties 和 YAML 文件时候会遵循文档中声明的顺序靠前的属性将被靠后的属性...

    web.xml中servlet, bean, filter, listenr 加载顺序_动力节点Java学院整理

    web.xml中的Servlet、Bean、Filter、Listener加载顺序详解 在Java Web应用程序中,web.xml文件扮演着非常重要的角色,它定义了Web应用程序的配置信息,包括Servlet、Bean、Filter、Listener等组件的配置。其中,...

    SpringTest.zip

    2. web.xml:配置DispatcherServlet,包括servlet-name、servlet-class、加载顺序(load-on-startup)、URL映射(url-pattern)等。 3. springmvc-config.xml:Spring MVC的核心配置文件,定义HandlerMapping、...

    跟开涛学spring3

    10. **AspectJ集成**:Spring3进一步加强了与AspectJ的集成,允许使用AspectJ的编译时和加载时织入,增强了AOP功能。 通过《跟开涛学Spring3》这本书,读者可以逐步学习并掌握这些关键知识点,无论你是Java新手还是...

Global site tag (gtag.js) - Google Analytics