Spring的创始者Rod Johnson 建议使用ApplicationContext 来取代BeanFactory, 在实现ApplicationContext的类中,最常用的大概是以下3个。
org.springframework.context.support.FileSystemXmlApplicationContext
可指定XML定义文件的相对路径或绝对路径读取定义文件
org.springframework.context.support.ClassPathXmlApplicationContext
从Classpath设置路径中读取XML定义文件
org.springframework,.web.context.support.XmlWebApplicationContext
在web应用程序的文件架构中,指定相对位置读取定义文件
-------------------------------------------------------------------------------------------------------------------
将Bean工厂或者应用程序上下文的定义划分到多个文件是有真正价值。随着容器定义作为一个文件的不断增长,将
很难理解其中Bean定义是干什么的,并且更难管理,包括修改。
一般地,我们建议或者按照应用程序中的纵向结构划分上下文,后者横向地按照模块或组件划分。在
后一种情况中,每个文件段中的定义组成狭小的纵向片断,包括多层。使用两种策略的组合来划分是有意义的!
--------------------------------------------------------------------------------------------------------------------------------------------
[context-param]
[param-name]contextConfigLocation[/param-name]
[param-value]
/WEB-INF/MzMg-DAO-Hibernate.xml
/WEB-INF/MzMg-Domain-Logic.xml
[/param-value]
[/context-param]
[listener]
[listener-class]org.springframework.web.context.ContextLoaderListener[/listener-class]
[/listener]
个是用ContextLoaderListener这个Listerner,另一个是ContextLoaderServlet这个Servlet,这两个方法都是在web应用启动的时候来初始化WebApplicationContext,我个人认为Listerner要比Servlet更好一些,因为Listerner监听应用的启动和结束,而Servlet得启动要稍微延迟一些,如果在这时要做一些业务的操作,启动的前后顺序是有影响的。
-------------------------------------------------------------------------------------------------------------------------------------
那么在ContextLoaderListener和ContextLoaderServlet中到底做了什么呢?
以ContextLoaderListener为例,我们可以看到
public void contextInitialized(ServletContextEvent event) {
this.contextLoader = createContextLoader();
this.contextLoader.initWebApplicationContext(event.getServletContext());
}
protected ContextLoader createContextLoader() {
return new ContextLoader();
}
ContextLoader是一个工具类,用来初始化WebApplicationContext,其主要方法就是initWebApplicationContext,我们继续追踪initWebApplicationContext这个方法(具体代码我不贴出,大家可以看Spring中的源码),我们发现,原来ContextLoader是把WebApplicationContext(XmlWebApplicationContext是默认实现类)放在了ServletContext中,ServletContext也是一个“容器”,也是一个类似Map的结构,而WebApplicationContext在ServletContext中的KEY就是WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,我们如果要使用WebApplicationContext则需要从ServletContext取出,Spring提供了一个WebApplicationContextUtils类,可以方便的取出WebApplicationContext,只要把ServletContext传入就可以了。
----------------------------------------------------------------------------------------------------------------------------------
初探spring applicationContext在web容器中加载过程
http://www.javaworld.com.tw/jute/post/view?bid=42&id=176383&sty=3&tpg=9&age=0
分享到:
相关推荐
标题 "spring2.0学习笔记+spring定时任务" 暗示了我们即将探讨的是关于Spring框架2.0版本的学习心得以及如何在Spring中配置和使用定时任务。在这个主题下,我们将深入理解Spring的核心概念,特别是它在企业级Java...
文档《Spring2.0学习笔记.doc》应该详细介绍了以上这些特性的使用方法和最佳实践,而《CodePub.Com说明.txt》可能包含了关于如何使用这些知识的一些说明或资源链接,便于读者更深入地学习和实践Spring 2.0。...
【Spring2.0学习笔记】 在深入探讨Spring2.0的知识点之前,首先理解几个核心概念至关重要。Spring框架的核心设计理念是控制反转(Inversion of Control, IoC)和依赖注入(Dependency Injection, DI)。IoC意味着...
### Spring2.0精简笔记知识点解析 #### 一、Spring基础知识 1. **Spring简介:** - **Spring框架**是一种轻量级Java开发框架,主要用来简化企业级应用的开发过程。它通过一系列的设计模式(如依赖注入DI、面向切...
**Spring 2.0核心技术详解** Spring框架是Java企业级应用开发中的一个重要组成部分,自2.0版本发布以来,它引入了许多重要的改进和新特性,极大地提升了开发效率和应用程序的可维护性。以下是对Spring 2.0核心知识...
Spring 2.0 宝典涵盖了 Spring 框架的核心概念和关键功能,包括低侵入式设计、依赖注入、BeanFactory 与 ApplicationContext、Web 应用支持、MVC 框架、面向切面编程以及持久化支持。这些内容不仅有助于理解和掌握 ...
标题中的"Spring学习笔记之一“why spring”"表明了这篇笔记主要探讨的是Spring框架的核心价值和使用背景。在IT行业中,Spring是一个广泛使用的Java企业级应用开发框架,它以其依赖注入(Dependency Injection,DI)...
3. **声明式事务的支持**:通过Spring提供的声明式事务管理,开发者可以从繁琐的事务管理代码中解脱出来,实现更灵活、高效的事务控制。 4. **方便程序的测试**:Spring支持非容器依赖的编程方式,这意味着开发者...
7. **学习资源**:压缩包中的文件包括《Spring技术内幕》、《java_spring_day01》、《Spring2.0核心技术与最佳实践》、《使用注解整合Spring和DWR的笔记》、《spring3.0资料》、《Spring从入门到精通》以及《Spring ...
- **学习笔记_7[1].4__Spring_MVC提供的更多功能**: 这部分可能会介绍Spring MVC的高级特性,比如视图解析器、拦截器、异常处理以及自定义转换器和格式化器。 - **Spring_MVC_3[1].0.5+Spring_3.0.5+MyBatis3.0.4全...
在 "spring-boot-learning-gitbook_column2.0" 这个文件夹中,你可能会找到关于以上知识点的代码示例、配置文件以及相关的学习笔记,帮助你深入理解并实践 Spring Boot。每个子目录可能对应一个特定的主题,如“Web ...
下面,我们将基于提供的“ssh整合学习笔记(图解)”这一主题,深入探讨SSH整合的关键知识点,以及如何在实践中运用这些框架。 ### Spring框架 Spring框架是一个开源的应用框架,其核心特性包括依赖注入(DI)、...
3. **自动配置增强**:Spring Boot 2在自动配置方面更加智能,比如对Thymeleaf、H2数据库、Flyway等的配置变得更加简便。 4. **Actuator升级**:Spring Boot 2的Actuator模块提供了更多用于监控和管理应用的端点,...
而在应用程序容器方面,AppFuse 选择了 Spring Framework,它提供了依赖注入、AOP(面向切面编程)等功能,进一步简化了组件的管理和协作。 用户在构建 Web 层时可以从 Struts、Spring MVC、Webwork、Taperstry 或 ...
这篇学习笔记将主要围绕JSP展开,探讨其基本概念、语法以及如何在实际开发中运用。 JSP(JavaServer Pages)是一种动态网页技术,它允许开发者在HTML或XML文档中嵌入Java代码,从而实现服务器端的动态内容生成。JSP...
### Apache CXF 学习笔记知识点汇总 #### 一、CXF简介 ##### 1.1 CXF概述 - **背景介绍**:Apache CXF 是一个高性能、功能丰富的开源框架,用于构建和消费 Web 服务。它融合了 Celtix 和 XFire 两个开源项目的...
这些学习笔记涵盖了IT领域的多个重要方面,包括编程语言、框架、数据库、缓存技术、容器化和Web服务器等。下面将分别对这些知识点进行详细解释。 1. **Java**: Java是一种广泛使用的面向对象的编程语言,以其跨平台...
1. **Spring框架**:学习Spring的核心组件,如IoC(Inversion of Control,控制反转)容器和AOP(Aspect Oriented Programming,面向切面编程),理解如何通过XML或Java配置来定义和管理Bean。 2. **依赖注入**:...