spring在web中的启动是由ContextLoaderListener开始的。ContextLoaderListener实现了ServlContextListener接口,并继承了ContextLoader类。
public class ContextLoaderListener extends ContextLoader implements ServletContextListener
笔记如下:
1.ServletContextListener 接口有两个方法:contextInitialized,contextDestroyed。
在服务器加载web应用的时候,这个Listener将被调用。
spring在contextInitialized中进行spring容器的初始化。
this.contextLoader.initWebApplicationContext(event.getServletContext());
2.ContextLoader的initWebApplicationContext方法:
首先判断web应用中是否有spring容器被加载过,如下
if (servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE) != null)
如果有被加载过,将抛出异常。提示是否放置了多个ContextLoaderListener。
3.创建WebApplicationContext前,将先处理父上下文(对于ERA工程而言有用可能)。
普通的web项目,是没有父上下文的。
ApplicationContext parent = loadParentContext(servletContext);
下面这句是创建WebApplicationContext的主过程。
this.context = createWebApplicationContext(servletContext, parent);
创建完的context置于servletContext中,这样Spring容器的宿主就是ServletContext(application Scope)。
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, this.context);
4.createWebApplicationContext方法:
首先进行ApplicationContext Class的诊断:如果指定了ContextClass但没有实现ConfigurableWebApplicationContext的,将抛出异常。
默认将根据ContextLoader.properties中指定class的实例
即:org.springframework.web.context.support.XmlWebApplicationContext
之后根据Servlet的版本2.4之前及2.5的不同,获取web的DisplayName。
设置ConfigurableWebApplicationContext的id。
最后代码进入实质性的处理
wac.setParent(parent);
wac.setServletContext(sc);
//获取configLocation的配置
wac.setConfigLocation(sc.getInitParameter(CONFIG_LOCATION_PARAM));
customizeContext(sc, wac);// 用于自定义ContextClass时,扩充自定义Context
wac.refresh();// 完成context构造过程。
分享到:
相关推荐
本文主要围绕"Spring源码学习七:web应用自动装配Spring配置文件1"这一主题,详细解析Web环境中Spring的初始化过程。 首先,我们注意到在传统的Java应用程序中,通常使用`ClassPathXmlApplicationContext`手动创建...
Spring框架是Java开发中最常用的轻量级开源框架之一,它为构建企业级应用程序提供了全面的基础设施。...通过阅读和研究源码,开发者可以更深入地了解Spring的工作原理,从而更好地优化和定制自己的应用。
6. 配置Web.xml:添加Struts2的过滤器,以及Spring的ContextLoaderListener,启动时加载Spring容器。 7. 编写JSP页面:作为视图展示结果,使用Struts2标签库进行交互。 这个源码包提供的sshweb项目,就是这样一个...
09. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 10. </listener> 11. 12. <servlet> 13. <servlet-name>spring</servlet-name> 14. <servlet-class>org.spring...
在Java Web开发中,DispatcherServlet和ContextLoaderListener都是Spring框架中的关键组件,它们各自承担着不同的职责,共同构建了一个高效、灵活的Web应用程序。这里我们将深入探讨这两个组件的区别及其工作原理。 ...
还需要在web.xml中配置ContextLoaderListener,以便在Tomcat启动时加载Spring上下文。 4. **配置Hibernate**:设置Hibernate的配置文件(hibernate.cfg.xml),包括数据库连接信息、实体类映射等。然后,创建...
- 配置web.xml,添加Struts2的Filter,以及Spring的ContextLoaderListener。 - 在Struts2配置中引入Spring插件,使Struts2能够识别Spring管理的Action。 6. **源码分析** - 源码中可能包含`struts.xml`、`...
3. **配置Spring**:同样在web.xml中,需要配置Spring的DispatcherServlet和ContextLoaderListener。前者处理请求,后者初始化Spring应用上下文。 4. **Struts2-Spring插件**:为了使Struts2能与Spring协同工作,...
- `web.xml`:配置Spring MVC的DispatcherServlet和ContextLoaderListener。 - `applicationContext.xml`:定义Spring容器的Bean,包括数据源、事务管理器、Service和DAO。 - `pom.xml`:Maven项目配置文件,包含...
同时,需要配置ContextLoaderListener,以便初始化Spring的ApplicationContext。Spring的配置文件则会定义Bean,包括Controller、Service、DAO等,以及相关的数据源和事务管理器。 Spring JDBC的配置主要包括数据源...
下面我们使用ContextLoaderListener作为载入器作一个详细的分析,这个Servlet的监听器是根上下文被载入的地方,也是整个 Spring web应用加载上下文的第一个地方;从加载过程我们可以看到,首先从Servlet事件中得到...
- **源码分析**: 了解Spring的工作原理,可以通过阅读源码加深理解,学习设计模式和最佳实践。 - **开发工具**: 使用IDE如IntelliJ IDEA或Eclipse,它们通常有集成的Spring支持,如自动配置、代码提示和调试功能。 ...
这里可能包含了Spring MVC的DispatcherServlet配置,以及其他如ContextLoaderListener来初始化Spring应用上下文。 `META-INF`目录常常用于存放元数据,例如`MANIFEST.MF`文件,它在JAR和WAR文件中记录了关于该文件...
1. 在 `src/main/webapp/WEB-INF` 目录下创建 `web.xml` 文件,配置 DispatcherServlet 和 ContextLoaderListener: ```xml <listener-class>org.springframework.web.context.ContextLoaderListener ...
2. **配置Spring**:同样在web.xml中配置Spring的ContextLoaderListener,初始化Spring容器,并指定配置文件的位置。Spring的bean定义通常包括Service、DAO以及对应的实现类。 3. **配置Hibernate**:配置Hibernate...
3. **Spring与Jersey集成:** 将Jersey集成到Spring环境中,可以通过Spring的ContextLoaderListener初始化Jersey的Servlet,或者使用`@Provider`注解的bean进行注册。这允许我们在Spring容器中管理Jersey组件,并...
2. 配置:在`web.xml`中配置DispatcherServlet和ContextLoaderListener,初始化Spring MVC和Spring容器。 3. 控制器:使用@Controller注解定义控制器类,@RequestMapping处理HTTP请求。 4. 视图解析:通过...
8. **部署**:完成开发后,可以通过Spring的ContextLoaderListener加载应用上下文,并将Wink的Servlet配置到应用服务器中,如Tomcat或Jetty。这样,REST服务就可以通过HTTP请求被外部调用了。 通过上述知识点,我们...
org.springframework.web.context.ContextLoaderListener 4.配置spring的配置文件(可以查看WEB-INF里面的applicationContext.xml文件) 注意:如果是默认,一定要放在WEB-INF中并文件名为...
`web.xml`是Java Web应用程序的部署描述符,通常用于配置Spring的DispatcherServlet、ContextLoaderListener等。在Spring MVC项目中,`web.xml`通常会包含以下内容: ```xml <servlet-name>dispatcher ...