主语
动作
宾语
Web容器
提供
一个全局的上下文环境ServletContext
ServletContext
提供
其为后面的spring IoC容器提供宿主环境
web.xml
提供
contextLoaderListener(监听器)
contextLoaderListener
监听
容器初始化事件
contextInitialized方法
被调用
spring会初始化一个启动上下文WebApplicationContext
WebApplicationContext
是
spring的IoC容器,会被以key-value形式存在ServletContext
<context-param>
配置
Bean
<servlet>
DispatcherServlet
DispatcherServlet上下文
初始化的时候
会建立自己的IoC上下文,用以持有spring mvc相关的bean
在建立DispatcherServlet自己的IoC上下文时,会从ServletContext中获取WebApplicationContext作为自己上下文的parent上下文
有了这个parent上下文之后,再初始化自己持有的上下文,然后存到ServletContext
javaee标准规定了,servlet容器需要在应用项目启动时,给应用项目初始化一个ServletContext作为公共环境容器存放公共信息。ServletContext中的信息都是由容器提供的
web.xml中可以定义两种参数:
一个是全局参数(ServletContext),通过<context-param></context-param>
一个是servlet参数,通过在servlet中声明
<init-param>
<param-name>param1</param-name>
<param-value>avalible in servlet init()</param-value>
</init-param>
spring为我们提供了实现ServletContextListener接口的上下文初始化监听器:org.springframework.web.context.ContextLoaderListener
ContextLoader的描述文档中已经说的很明白了其作用:实际上由ContextLoaderListener调用执行根应用上下文的初始化工作
