WebApplicationContext资料(转自http://hi.baidu.com/sbipbje123/blog/item/7036ecce8b855a0693457e2c.html):
WebApplicationContext是专门为Web应用准备的,它允许从相对于Web根目录的路径中装载配置文件完成初始化工作.从WebApplicationContext 中可以获得ServletContext的引用,整个Web应用上下文对象将作为属性放置到ServletContext中,以便Web应用环境可以访问 Spring应用上下文.Spring专门为此提供一个工具类WebApplicationContextUtils,通过该类的getWebApplicationContext(ServletContext sc)方法,即可以从ServletContext中获取WebApplicationContext实例.
Spring2.0在WebApplicationContext中还为Bean添加了三个新的作用域:request作用域.session作用域和 global session作用域 .而在非Web应用的环境下,Bean只有singleton和prototype作用域.
由于Web应用比一般的应用拥有更多的特性,因此WebApplicationContext扩展了 ApplicationContext.WebApplicationContext定义了一个常量 ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE,在上下文启动时,WebApplicationContext实例既以 次为键放置在ServletContext的属性列表中,因此我们可以直接通过以下语句获取:
这正是我们前面所提到的WebApplicationContextUtils工具类 getWebApplicationContext(ServletContext sc)方法的内部实现方式.这样Spring的Web应用上下文和Web容器的上下文实现互放,二者实现了融合.