[转]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");

时间: 2025-01-04 16:37:29

[转]Spring中的ContextLoaderListener使用的相关文章

【转载】Spring中DispatcherServlet与ContextLoaderListener的区别

昨天在写springmvc的时候,在web.xml中配置了DispatcherServlet,如下: <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>

Spring中加载xml配置文件的六种方式

因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,所以就总结了下Spring中加载xml配置文件的方式,我总结的有6种, xml是最常见的spring 应用系统配置源.Spring中的几种容器都支持使用xml装配bean,包括: XmlBeanFactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicati

【转载】Spring中的applicationContext.xml与SpringMVC的xxx-servlet.xml的区别

一直搞不明白两者的区别. 如果使用了SpringMVC,事实上,bean的配置完全可以在xxx-servlet.xml中进行配置.为什么需要applicationContext.xml?一定必须? 一. 因为直接使用了SpringMVC,所以之前一直不明白xxx-servlet.xml和applicationContext.xml是如何区别的,其实如果直接使用SpringMVC是可以不添加applicationContext.xml文件的. 使用applicationContext.xml文件时

Spring中WebApplicationContext的研究

ApplicationContext是Spring的核 心,Context我们通常解释为上下文环境,我想用“容器”来表述它更容易理解一些,ApplicationContext则是“应用的容器” 了:P,Spring把Bean放在这个容器中,在需要的时候,用getBean方法取出,虽然我没有看过这一部分的源代码,但我想它应该是一个类似 Map的结构.在Web应用中,我们会用到WebApplicationContext,WebApplicationContext继承自 ApplicationCont

spring中的web上下文,spring上下文,springmvc上下文区别(超详细)

web上下文(Servlet context),spring上下文(WebApplication Context),springmvc上下文(mlWebApplicationCont)之间区别. 上下文:可以简单的理解为容器,配置文件 web上下文目标对象是所有web应用,spring上下文目标对象是单个web应用,spring mvc目标对象是单个web应用的spring mvc框架(是spring上下文的子上下文,即继承自spring上下文,所以子能够调用父的东西,反之,不可). 以上感觉自

在Spring中整合JUnit单元测试

一 简介 在Java Web开发中,通常我们会开发很多的功能代码.在代码正式使用之前,为了确保代码能够正确实现我们预期的功能,最好是添加一些简单代码对代码逻辑进行测试.很显然,JUnit就是一个不错的单元测试工具,同时在Spring中我们也可以很方便地引入JUnit进行测试 二 代码实例 (1)引入必需的jar包: 这里除了Spring以及其他模块所需要的jar包之外,还需要引入: spring-test-4.2.3.RELEASE.jar junit-4.10.jar 注:jar包版本使用最新

cxf整合到spring中

项目中一般都是通过spring来进行管理,因此,绝大多数框架最终都将整合的spring中,cxf也不例外. 下面就讲解如何配置cxf,将其整合到spring中.(例子中web项目通过maven来进行管理,建立的mav项目为WebService_CXF) 一.pom.xml文件添加依赖jar包 1)添加spring支持     2)添加cxf支持 配置如下: 1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi

Spring中过滤器+监听器的使用

过滤器: 过滤器放在web资源之前,可以在请求抵达它所应用的web资源(可以是一个Servlet.一个Jsp页面,甚至是一个HTML页面)之前截获进入的请求,并且在它返回到客户之前截获输出请求.Filter:用来拦截请求,处于客户端与被请求资源之间,目的是重用代码.Filter链,在web.xml中哪个先配置,哪个就先调用.在filter中也可以配置一些初始化参数. Filter 有如下几个种类: 用户授权的Filter: Filter 负责检查用户请求,根据请求过滤用户非法请求. 日志Filt

spring中获取applicationContext(2)

前几天写web项目的时候,用到了spring mvc. 但是又写bean.我要在代码里面生成,而这个bean里面,又有一些属性是通过spring注入的. 所以,只能通过ApplicationContext来获取. 在servlet里面获取ApplicationContext其实可以通过spring提供的方法: ? 1 WebApplicationContextUtils.getWebApplicationContext(ServletContext) 来获取. 这个方法前提是要在web.xml里