`

Spring中的ContextLoaderListener使用

阅读更多

最近 项目中使用Spring 时,applicationContext.xml配置文件中并没有BeanFactory,要想在业务层中的class 文件中直接引用Spring容器管理的bean可通过以下方式

 

1、在web.xml配置监听器ContextLoaderListener

 <listener>  
 <listener-class>org.springframework.web.context.ContextLoaderListener
 </listener-class>
 </listener>

 

ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。

 

 

 

2、部署applicationContext的xml文件

如何部署applicationContext的xml文件,如果在web.xml中不写任何参数配置信息,默认的路径是"/WEB-INF/applicationContext.xml,在WEB-INF目录下创建的xml文件的名称必须是applicationContext.xml。如果是要自定义文件名可以在web.xml里加入contextConfigLocation这个context参数:
<context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>  
            /WEB-INF/classes/applicationContext-*.xml   
        </param-value>  
    </context-param> 

 

在<param-value> </param-value>里指定相应的xml文件名,如果有多个xml文件,可以写在一起并一“,”号分隔。上面的applicationContext-*.xml采用通配符,比如这那个目录下有applicationContext-ibatis-base.xml,applicationContext-action.xml,applicationContext-ibatis-dao.xml等文件,都会一同被载入。

 

由此可见applicationContext.xml的文件位置就可以有两种默认实现:

第一种:直接将之放到/WEB-INF下,之在web.xml中声明一个listener、

第二种:将之放到classpath下,但是此时要在web.xml中加入<context-param>,用它来指明你的applicationContext.xml的位置以供web容器来加载。按照Struts2 整合spring的官方给出的档案,写成:
<!-- Context Configuration locations for Spring XML files -->  
<context-param>  
    <param-name>contextConfigLocation</param-name>  
    <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>  
</context-param>

3、调用处

在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成。看看它的API说明

第一段说明ContextLoader可以由 ContextLoaderListener和ContextLoaderServlet生成。如果查看ContextLoaderServlet的API,可以看到它也关联了ContextLoader这个类而且它实现了HttpServlet。这个接口

    第二段,ContextLoader创建的是 XmlWebApplicationContext这样一个类,它实现的接口是WebApplicationContext->ConfigurableWebApplicationContext->ApplicationContext->

BeanFactory这样一来spring中的所有bean都由这个类来创建

 

IUploaddatafileManager uploadmanager = (IUploaddatafileManager) ContextLoaderListener.getCurrentWebApplicationContext().getBean("uploadManager");

 

 

 

分享到:
评论

相关推荐

    Spring的监听器ContextLoaderListener的作用

    ContextLoaderListener 是 Spring 框架中的一种监听器,它的主要作用是启动 Web 容器时,自动装配 ApplicationContext 的配置信息。它实现了 ServletContextListener 接口,在 web.xml 文件中配置这个监听器,启动...

    Web项目中使用Spring, 使用 Spring 的器监听器 ContextLoaderListener.docx

    【Spring在Web项目中的应用】 ...同时,通过监听器`ContextLoaderListener`,可以在Web容器启动时自动加载Spring配置,确保在整个Web应用程序生命周期中,Service层和其他Spring管理的bean都可以正确地被创建和管理。

    web.xml中ContextLoaderListener的运行过程解析

    `ContextLoaderListener`是Spring框架中的一个监听器,它负责初始化Spring应用上下文。下面将详细解析`web.xml`中`ContextLoaderListener`的运行过程。 ### 1. `web.xml`的作用 `web.xml`文件主要用来定义Servlet、...

    java解决org.springframework.web.context.ContextLoaderListener

    在Java Web开发中,`org.springframework.web.context.ContextLoaderListener` 是Spring框架的一部分,它负责初始化一个Web应用程序的Spring上下文。这个监听器是基于Servlet容器(如Tomcat、Jetty等)的,当Web应用...

    DispatcherServlet 和 ContextLoaderListener 区别

    在Java Web开发中,DispatcherServlet和ContextLoaderListener都是Spring框架中的关键组件,它们各自承担着不同的职责,共同构建了一个高效、灵活的Web应用程序。这里我们将深入探讨这两个组件的区别及其工作原理。 ...

    ssh整合时遇到常见错误 ContextLoaderListener not found 解决

    在IT行业中,SSH整合指的是Spring、Struts和Hibernate这三个开源框架的集成,它们共同构建了一个强大的企业级Web应用开发解决方案。然而,在实际操作过程中,开发者经常会遇到各种问题,其中之一就是...

    Spring中ApplicationContext加载机制

    Spring中ApplicationContext加载机制 ApplicationContext 是 Spring 框架中的核心组件之一,负责加载和管理应用程序中的 Bean 对象。在 Web 应用程序中,ApplicationContext 的加载机制是非常重要的, Spring 提供...

    Struts2.5.22+Spring5.3.10+Hiberbate5.6.15整合练习源码包

    6. 配置Web.xml:添加Struts2的过滤器,以及Spring的ContextLoaderListener,启动时加载Spring容器。 7. 编写JSP页面:作为视图展示结果,使用Struts2标签库进行交互。 这个源码包提供的sshweb项目,就是这样一个...

    struts+spring

    Struts和Spring是两个在Java Web开发中广泛使用的开源框架,它们各自专注于应用程序的不同方面。Struts1.3是一款基于MVC(Model-View-Controller)设计模式的框架,主要用于控制应用程序的流程,而Spring2.5则是一个...

    Spring-5.1.5源码

    在这个版本中,我们主要关注`spring-web`模块中的`org.springframework.web.context.ContextLoaderListener`类,它是Spring MVC应用的核心部分。 `ContextLoaderListener`是一个实现了`javax.servlet....

    spring springmvc mybatis框架整合需要的jar包

    最后,应用的启动入口通常是一个Servlet或Filter,例如Spring的ContextLoaderListener或DelegatingFilterProxy,它们负责初始化Spring容器,并在Web应用启动时加载配置。 总结起来,整合Spring、SpringMVC和MyBatis...

    maven与spring MVC

    DWR的配置可以通过Spring的ContextLoaderListener来加载,使得DWR服务能够被Spring容器管理。这样,DWR可以调用Spring的业务层服务,实现前端与后端的实时通信。 综上所述,这个项目可能是一个使用Maven构建的Java ...

    使用注解将 Vaadin 6.7.3 和 Spring 3.0.5 整合 (一)

    这可以通过在Vaadin组件类上使用`@ComponentScan`注解或在Spring配置中指定组件扫描基包来实现。 最后,不要忘记在web.xml中配置Spring的DispatcherServlet,以处理非Vaadin的HTTP请求。同时,还需要配置Spring的...

    整合spring+dorado

    &lt;listener-class&gt;com.bstek.dorado.context.spring.SpringContextLoaderListener&lt;/listener-class&gt; &lt;param-name&gt;contextConfigLocation &lt;param-value&gt;classpath:spring-context.xml ... ``` 在Dorado的...

    Spring4整合Jersey2.9

    3. **配置Jersey**:在`web.xml`中设置Jersey的Servlet,同时配置Spring的ContextLoaderListener,以加载Spring配置: ```xml &lt;servlet-name&gt;jersey-serlvet &lt;servlet-class&gt;org.glassfish.jersey.servlet....

    Spring笔记.doc

    监听器如 ContextLoaderListener 在项目启动时加载 Spring 配置文件并保存到 application 对象中,WebApplicationContextUtils 可以从 application 对象中获取 Spring 上下文。 【Spring 与 Hibernate 整合】 ...

    spring MVC配置详解

    在 web.xml 文件中配置 ContextLoaderListener 和 contextConfigLocation,以便加载 Spring 的配置文件。 ```xml &lt;!-- Spring 配置 --&gt; org.springframework.web.context.ContextLoaderListener ...

    servlet与spring整合例子

    然后在Web应用的`web.xml`中,通过`ContextLoaderListener`配置Spring上下文,使得在应用启动时Spring容器被初始化。 2. **Servlet与Spring的交互** 传统的Servlet在接收到请求后,会手动创建或查找需要的服务对象...

    WebService的CXF整合Spring

    4. **服务注册**:在Spring配置文件中,使用`jaxws:endpoint`标签将服务接口与实现类关联起来,并指定服务地址和服务端点实现。 5. **部署和测试**:将Spring配置文件加载到Spring应用上下文中,然后通过Spring的...

    spring底层的学习之路

    在学习Spring的过程中,理解IoC和DI原理、熟练使用Spring MVC以及掌握AOP是关键。随着学习的深入,你还可以探索Spring Boot、Spring Cloud等扩展技术,它们进一步简化了Spring应用的开发和部署。 总的来说,"Spring...

Global site tag (gtag.js) - Google Analytics