Spring源代码解析(二):IOC容器在web容器中的启动 - 编程入门网
ng[] getDefaultConfigLocations() {
if (getNamespace() != null) {
return new String[] {DEFAULT_CONFIG_LOCATION_PREFIX + getNamespace() + DEFAULT_CONFIG_LOCATION_SUFFIX};
}
else {
return new String[] {DEFAULT_CONFIG_LOCATION};
}
}
}
Spring源代码解析(二):IOC容器在web容器中的启动(2)时间:2011-03-29 javaeye jiwenke对于一个Spring激活的web应用程序,可以通过使用Spring代码声明式的指定在web应 用程序启动时载入应用程序上下文(WebApplicationContext),Spring的ContextLoader是 提供这样性能的类,我们可以使用 ContextLoaderServlet或者ContextLoaderListener的 启动时载入的Servlet来实例化Spring IOC容器 - 为什么会有两个不同的类来装载它呢, 这是因为它们的使用需要区别不同的Servlet容器支持的Serlvet版本。但不管是 ContextLoaderSevlet还是 ContextLoaderListener都使用ContextLoader来完成实际的 WebApplicationContext的初始化工作。这个ContextLoder就像是Spring Web应用程序在 Web容器中的加载器booter。当然这些Servlet的具体使用我们都要借助web容器中的部署 描述符来进行相关的定义。 下面我们使用ContextLoaderListener作为载入器作一个详细的分析,这个Servlet的 监听器是根上下文被载入的地方,也是整个 Spring web应用加载上下文的第一个地方; 从加载过程我们可以看到,首先从Servlet事件中得到ServletContext,然后可以读到配 置好的在web.xml的中的各个属性值,然后ContextLoder实例化WebApplicationContext并 完成其载入和初始化作为根上下文。当这个根上下文被载入后,它被绑定到web应用程序 的ServletContext上。任何需要访问该ApplicationContext的应用程序代码都可以从 WebApplicationContextUtils类的静态方法来得到: 代码 WebApplicationContext getWebApplicationContext(ServletContext sc) 以Tomcat作为Servlet容器为例,下面是具体的步骤: 1.Tomcat 启动时需要从web.xml中读取启动参数,在web.xml中我们需要对 ContextLoaderListener进行配置,对于在web应用启动入口是在ContextLoaderListener 中的初始化部分;从Spring MVC上看,实际上在web容器中维护了一系列的IOC容器,其中 在ContextLoader中载入的IOC容器作为根上下文而存在于 ServletContext中。 代码
通过ContextLoader建立起根上下文的过程,我们可以在ContextLoader中看到: 代码
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |