`
andy_wu2011
  • 浏览: 10255 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

tomcat启动时Spring做了什么(一、创建ContextLoader)

阅读更多
在配置Spring 的时候,我们需要在web.xml文件中配置一个listener如下:
<listener>
<listener-class>
    org.springframework.web.context.ContextLoaderListener
         </listener-class>
</listener>
当server启动的时候,需要初始化WebApplicationContext,那么就会调用ContextLoaderListener的contextInitialized方法,该方法如下:
public void contextInitialized(ServletContextEvent event) {
		this.contextLoader = createContextLoader();
		this.contextLoader.initWebApplicationContext(event.getServletContext());
	}

首先,它将创建ContextLoader;
那么在创建ContextLoader的时候会干什么呢?在ContextLoader里面,有一段静态块:
static {
		// Load default strategy implementations from properties file.
		// This is currently strictly internal and not meant to be customized
		// by application developers.
		try {
			ClassPathResource resource = new ClassPathResource(DEFAULT_STRATEGIES_PATH, ContextLoader.class);
			defaultStrategies = PropertiesLoaderUtils.loadProperties(resource);
		}
		catch (IOException ex) {
			throw new IllegalStateException("Could not load 'ContextLoader.properties': " + ex.getMessage());
		}
	}

事实上,此段静态代码是为了获取WebApplicationContext的实现,WebApplicationContext的策略是定义在一个叫做ContextLoader.properties的文件中,Spring给了默认的定义,内容如下:
org.springframework.web.context.WebApplicationContext=org.springframework.web.context.support.XmlWebApplicationContext
一般来说,Spring团队建议不要去修改它,直接使用即可。
获取ContextLoader.properties的classPath后,将它用Properties包装。
接下来就是初始化WebApplicationContext了。
(待续)
分享到:
评论

相关推荐

    Spring在容器在启动的时候发生了什么

    总结来说,Spring在容器启动时,通过`ContextLoaderListener`监听器触发一系列事件,包括`ContextLoader`的初始化和`WebApplicationContext`的创建。这个过程不仅加载了配置文件中的bean定义,还进行了依赖注入和...

    Spring在web下启动流程学习笔记

    这个监听器是Spring Web应用程序的核心组件,它继承自`ContextLoader`,并在Web容器启动时执行`contextInitialized`方法。在这个方法中,`ContextLoader`会调用`initWebApplicationContext`,这是启动Web上下文的...

    ContextLoader 加载xml

    这个过程是Spring框架启动时的核心步骤,为整个应用提供了IoC(Inversion of Control)容器,使得我们可以声明性地配置bean并管理它们的生命周期。当我们谈论“ContextLoader加载XML”时,我们关注的是如何通过XML...

    在Eclipse 中创建Spring的 Web应用.doc

    - **ContextLoaderListener**:这是一个Servlet监听器,它会在Web应用启动时自动加载`/WEB-INF/applicationContext.xml`(默认配置)。 - **ContextLoaderServlet**:这是一个Servlet,同样用于初始化`...

    Spring源码学习七:web应用自动装配Spring配置文件1

    这个过程确保了Spring容器在Web应用启动时被正确地创建和加载。 在`initWebApplicationContext`方法中,首先检查当前的ServletContext中是否已经存在一个根ApplicationContext。如果存在,则抛出`...

    精品专题(2021-2022年收藏)spring项目中监听器作用.doc

    它是Spring在Web应用中的入口点,当Web容器启动时,如Tomcat或Jetty,会按照`web.xml`配置文件中的监听器部分进行初始化。`ContextLoaderListener`实现了`ServletContextListener`接口,该接口规定了两个方法:`...

    spring-web-2.5.jar

    org.springframework.web.context.ContextLoader.class org.springframework.web.context.ContextLoaderListener.class org.springframework.web.context.ContextLoaderServlet.class org.springframework.web....

    官方原版源码spring-framework-5.0.13.RELEASE.zip

    1. **初始化流程**:从`org.springframework.context.support.ClassPathXmlApplicationContext`或`org.springframework.web.context.ContextLoader`开始,理解如何加载配置并创建Bean定义。 2. **依赖注入**:研究`...

    Spring笔记.doc

    控制反转是一种设计模式,它将对象的创建和管理从应用程序本身剥离出来,转交给一个外部容器(在 Spring 中即为 IoC 容器)。这使得组件之间的依赖关系不再硬编码,而是通过配置来定义。例如,在传统的开发方式中,...

    Spring的监听器ContextLoaderListener的作用

    ContextLoaderListener 是 Spring 框架中的一种监听器,它的主要作用是启动 Web 容器时,自动装配 ApplicationContext 的配置信息。它实现了 ServletContextListener 接口,在 web.xml 文件中配置这个监听器,启动...

    spring源代码解析

    对于一个Spring激活的web应用程序,可以通过使用Spring代码声明式的指定在web应用程序启动时载入应用程序上下文(WebApplicationContext),Spring的ContextLoader是提供这样性能的类,我们可以使用 ...

    spring ioc以及事物架构图

    2. **创建BeanFactory实例**:接着,创建一个`DefaultListableBeanFactory`实例,它继承自`AbstractAutowireCapableBeanFactory`,是Spring IoC容器的核心实现之一。 ```java DefaultListableBeanFactory factory ...

    spring在web.xml中和在struts中的不同配置..pdf

    总结来说,Spring在`web.xml`中的配置更加独立,它不依赖于任何特定的应用框架,而是在Web应用启动时独立初始化ApplicationContext。而在Struts中,Spring作为插件集成,依赖于Struts的执行流程来管理Bean。这两种...

    spring中的所有配置

    当Web容器启动时,它会触发`ContextLoaderListener`,该监听器将读取并创建一个WebApplicationContext。这通常在`web.xml`文件中通过`&lt;listener&gt;`标签进行配置: ```xml &lt;listener-class&gt;org.springframework.web...

    最新版spring-framework-4.3.12.RELEASE-schema.zip约束

    Spring Framework 是一个全面的Java应用开发框架,以其模块化、可扩展性和强大的功能著称。在4.3.12.RELEASE版本中,它引入了一系列的改进和优化,旨在提高性能,增强稳定性和提供更好的开发者体验。这个"spring-...

    使用监听器对Spring bean id进行唯一校验过程解析

    BeanFactoryPostProcessor是一个Spring的接口,用于在bean工厂启动时对bean进行后置处理。在这个接口中,我们可以实现bean id的唯一性校验,并报错提示。 使用监听器对Spring bean id进行唯一校验是解决bean id重复...

    spring-framework-3.2.5.RELEASE 源代码

    Spring Framework作为Java领域最广泛应用的轻量级框架之一,其3.2.5.RELEASE版本的源代码蕴含了丰富的设计思想和技术实现。深入理解这个版本的源代码,不仅可以帮助开发者提升对Spring的理解,也能更好地运用到实际...

    框架源码专题

    `ContextLoaderListener`是Spring Web应用程序中最常用的启动类之一,它实现了`ServletContextListener`接口,用于在Servlet容器启动时加载Spring上下文。下面是对`ContextLoaderListener`的一些关键代码解析: ```...

    SpringMVC中ervletContextListener的使用

    总之,`ServletContextListener`是Spring MVC中一个强大且灵活的工具,它可以用于在应用程序启动时执行初始化操作,并在关闭时进行清理。结合Spring框架,我们可以有效地管理ApplicationContext,加载配置,以及执行...

Global site tag (gtag.js) - Google Analytics