- 浏览: 3499685 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
(1)
org.springframework.web.context.ContextLoaderListener
这个类被定义为监听器,并读取在参数contextConfigLocation中定义的xml
文件,如果不设置contextConfigLocation的初始参数则默认会读取
WEB-INF路径下的
application.xml文件,如果需要自定义了另外的xml
则可以在contextConfigLocation下定义,ContextLoaderListener会读取这些XML文件并产生
WebApplicationContext对象,然后将这个对象放置在ServletContext的属性里,这样我们只要可以得到Servlet就可
以得到WebApplicationContext对象,并利用这个对象访问spring 容器管理的bean。
(2)解析ContextLoadListener的源代码
// 实现了servlet的ServletContextListener接口
public class ContextLoaderListener
implements ServletContextListener
{
private ContextLoader contextLoader;
// 这个是最重要的,利用contextLoader 来完成所有的工作
public void contextInitialized(ServletContextEvent event)
{
this.contextLoader = createContextLoader();
this.contextLoader.initWebApplicationContext(event.getServletContext());
}
protected ContextLoader createContextLoader()
{
return new ContextLoader();
}
public ContextLoader getContextLoader()
{
return this.contextLoader;
}
public void contextDestroyed(ServletContextEvent event)
{
if (this.contextLoader != null)
this.contextLoader.closeWebApplicationContext(event.getServletContext());
}
}
下面看一下ContextLoader .initWebApplicationContext方法
public WebApplicationContext initWebApplicationContext(ServletContext servletContext)
throws IllegalStateException, BeansException
{
if (servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE) != null) {
throw new IllegalStateException("Cannot initialize context because
there is already a root application context present - check whether you
have multiple ContextLoader* definitions in your web.xml!");
}
long startTime = System.currentTimeMillis();
if (this.logger.isInfoEnabled())
this.logger.info("Root WebApplicationContext: initialization started");
servletContext.log("Loading Spring root WebApplicationContext");
try
{
ApplicationContext parent = loadParentContext(servletContext);
// 这里得到WebApplicationContext对象
,下面具体看一下这个方法是如何实现的
this.context = createWebApplicationContext(servletContext, parent);
// 将这个对象设置到
servletContext的属性里
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);
if (this.logger.isInfoEnabled()) {
this.logger.info("Using context class [" +
this.context.getClass().getName() + "] for root WebApplicationContext");
}
if (this.logger.isDebugEnabled()) {
this.logger.debug("Published root WebApplicationContext [" +
this.context + "] as ServletContext attribute with name [" +
WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE + "]");
}
if (this.logger.isInfoEnabled()) {
long elapsedTime = System.currentTimeMillis() - startTime;
this.logger.info("Root WebApplicationContext: initialization completed in " + elapsedTime + " ms");
}
return this.context;
}
protected WebApplicationContext createWebApplicationContext(ServletContext servletContext, ApplicationContext parent)
throws BeansException
{
// 返回在web.xml 中参数contextClass自定义类对应的对象这个类,这个类实现了XmlWebApplicationContext
//
XmlWebApplicationContext继承了AbstractRefreshableWebApplicationContext类中定义的
方法protected String[] getConfigLocations()
,这个方法默认可以加载contextConfigLocation中定义的xml
文件,如果你重写了这个方法还可以在任意地方加载你想要的xml文件。
Class contextClass = determineContextClass(servletContext);
if (!(ConfigurableWebApplicationContext.class.isAssignableFrom(contextClass))) {
throw new ApplicationContextException("Custom context class [" +
contextClass.getName() + "] is not of type
ConfigurableWebApplicationContext");
}
// 得到 WebApplicationContext
ConfigurableWebApplicationContext wac = (ConfigurableWebApplicationContext)BeanUtils.instantiateClass(contextClass);
wac.setParent(parent);
wac.setServletContext(servletContext);
String configLocation = servletContext.getInitParameter("contextConfigLocation");
if (configLocation != null) {
wac.setConfigLocations(StringUtils.tokenizeToStringArray(configLocation, ",; \t\n"));
}
wac.refresh();
return wac;
}
发表评论
-
说明SOA监管(SOA Governance)实例(收录备查)
2012-12-19 11:35 1749SOA 已经不是单纯技术问 ... -
Injecting Spring Beans into Java Servlets
2012-11-01 10:21 1933If you are working in a Java ... -
用 HttpServletResponseWrapper 实现 Etag 过滤器
2012-07-09 16:58 3757原文出处:http://blog.chenlb.com/200 ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:17 3880When I try to install the And ... -
Eclipse Indigo - Cannot install Android ADT Plugin
2012-02-29 01:13 1984When I try to install the And ... -
[转]mybatis下的分页,支持所有的数据库
2011-07-21 13:21 14835大 家都知道,mybatis的自带分页方法只是逻 ... -
Java framework for text- & console-based forms?
2011-07-21 01:06 1708charva jcurses JNA , ... -
JNA(Java Native Access)学习入门
2011-07-21 01:04 22609Java Native Access 项目 在 ... -
使用IntrospectorCleanupListener 解决quartz引起的内存泄漏
2011-04-20 11:59 13357"在服务器运行过程中,Spring不停的运行的计划任 ... -
DBCP代码研读以及就数据库连接失效的解决
2011-03-31 11:03 3760问题 网上很多评论说DBCP有很多BUG,但是都没有指明是什 ... -
Servlet3.0新功能: 异步处理
2010-12-06 15:22 3175J2EE 6和Glassfish 3V正式发 ... -
Servlet3.0引入的新特性
2010-12-06 15:20 3052Servlet3.0规范的新特性主要是为了3个目的: ... -
100個節點上運行群集亞馬遜EC2上Hazelcast
2010-12-03 23:59 3315本文的目的,適是给妳湮示的細節集群的100個節點。此湮示記錄, ... -
Spring Properties Reloaded
2010-12-02 14:54 4367Spring Properties Reloaded Som ... -
为spring2.5中的jpetstore增加perf4j监控
2010-09-02 13:51 2639perf4j是一款类似于log4j的性能检测工具. 它 ... -
语义网的学习资源大汇集(备忘)
2010-06-23 22:48 1731网上资源 http:/ ... -
使用 JOLAP 实现复杂分析查询
2010-06-06 13:42 1961Shashank Tiwari 在本文中对 ... -
HTML5 Canvas for Internet Explorer
2010-06-04 21:16 1856Canvascape http://www.benjoff ... -
大型网站架构演变和知识体系
2010-06-01 23:47 1956架构演变第一步:物 ... -
Ejb Con Spring
2010-05-20 17:46 2202Contenido [ocultar] 1 ...
相关推荐
Spring 的监听器 ContextLoaderListener 的作用 ContextLoaderListener 是 Spring 框架中的一种监听器,它的主要作用是启动 Web 容器时,自动装配 ApplicationContext 的配置信息。它实现了 ServletContextListener...
`ContextLoaderListener`是Spring框架中的一个监听器,它负责初始化Spring应用上下文。下面将详细解析`web.xml`中`ContextLoaderListener`的运行过程。 ### 1. `web.xml`的作用 `web.xml`文件主要用来定义Servlet、...
在Java Web开发中,DispatcherServlet和ContextLoaderListener都是Spring框架中的关键组件,它们各自承担着不同的职责,共同构建了一个高效、灵活的Web应用程序。这里我们将深入探讨这两个组件的区别及其工作原理。 ...
然而,在实际操作过程中,开发者经常会遇到各种问题,其中之一就是"ContextLoaderListener not found"的错误。这个错误通常出现在尝试启动基于Spring MVC的Web应用程序时,因为它无法找到用于初始化Spring应用上下文...
在Java Web开发中,`org.springframework.web.context.ContextLoaderListener` 是Spring框架的一部分,它负责初始化一个Web应用程序的Spring上下文。这个监听器是基于Servlet容器(如Tomcat、Jetty等)的,当Web应用...
【Spring在Web项目中的应用】 ...同时,通过监听器`ContextLoaderListener`,可以在Web容器启动时自动加载Spring配置,确保在整个Web应用程序生命周期中,Service层和其他Spring管理的bean都可以正确地被创建和管理。
本文将深入探讨Spring框架中的监听器,特别是`ContextLoaderListener`的作用及其配置。 `ContextLoaderListener`是Spring框架提供的一个核心监听器,主要用于初始化和销毁Spring的WebApplicationContext。它是...
在这个版本中,我们主要关注`spring-web`模块中的`org.springframework.web.context.ContextLoaderListener`类,它是Spring MVC应用的核心部分。 `ContextLoaderListener`是一个实现了`javax.servlet....
本篇文章将重点介绍Spring框架的启动过程,特别是通过`web.xml`配置文件中的`ContextLoaderListener`来初始化Spring上下文的部分。 ##### 2.1 `ContextLoaderListener`简介 `ContextLoaderListener`是Spring Web...
`<context-param>`中的`webAppRootKey`定义了Web应用程序的根目录键,而`<listener>`标签注册了两个监听器:`ContextLoaderListener`和`IntrospectorCleanupListener`。 `ContextLoaderListener`是Spring提供的一种...
在Spring 3.x版本中,WebApplicationContext的初始化是通过Web容器来完成的,主要有两种方式:使用ContextLoaderListener或ContextLoaderServlet。 1. **ContextLoaderListener启动WebApplicationContext** ...
当`ContextLoaderListener`或`ContextLoaderServlet`初始化WebApplicationContext时,它们会创建一个`XmlWebApplicationContext`实例(默认实现),并将它放入ServletContext中。ServletContext也是容器,存储了Web...
Spring框架提供了一个监听器ContextLoaderListener,就是对上述功能的封装,该监听器内部加载Spring配置文件,创建应用上下文对象,并存储到ServletContext域中。同时,Spring还提供了一个客户端工具...
- 最佳实践建议:使用Struts Plugin来加载`action-servlet.xml`,而通过`ContextLoaderListener`或`ContextLoaderServlet`加载`applicationContext.xml`,以此实现分阶段加载Spring配置文件的目标。 #### 二、...
在这个笔记中,我们将深入探讨如何在Web应用环境下使用Spring框架,特别是通过两种不同的方法:配置监听器类和调用HttpServlet类,以及配置ContextLoaderListener。 首先,Spring框架在Web应用中的主要作用是提供...
在Spring框架中,`ContextLoaderListener`是一个非常重要的监听器,它用于初始化Web应用程序上下文。当Web容器启动时,它会触发`ContextLoaderListener`,该监听器将读取并创建一个WebApplicationContext。这通常在`...
`ContextLoaderListener`的`contextInitialized`方法主要负责调用`initWebApplicationContext`方法,该方法在`ContextLoader`类中实现,其作用是初始化Web环境下的Spring应用上下文(ApplicationContext)。...
ContextLoaderListener 是Spring框架中一个重要的组件,它作为Servlet容器的监听器(ServletContextListener),在Web应用程序启动时自动加载ApplicationContext的配置信息。当web.xml中配置了`<listener-class>org...
如果同时使用了`ContextLoaderListener`和`ContextLoaderServlet`,那么`ContextLoaderServlet`的配置将会覆盖`ContextLoaderListener`。因此,一般情况下,我们只选择其中一种方式来加载Spring配置。 5. **自定义...
通过对给定文件的分析,我们了解了Spring框架中XML配置的基本用法,包括如何配置`ContextLoaderListener`和`ContextLoaderServlet`,以及如何利用自动装配机制来简化依赖注入过程。这些配置对于构建基于Spring的Web...