在配置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在容器启动时,通过`ContextLoaderListener`监听器触发一系列事件,包括`ContextLoader`的初始化和`WebApplicationContext`的创建。这个过程不仅加载了配置文件中的bean定义,还进行了依赖注入和...
这个监听器是Spring Web应用程序的核心组件,它继承自`ContextLoader`,并在Web容器启动时执行`contextInitialized`方法。在这个方法中,`ContextLoader`会调用`initWebApplicationContext`,这是启动Web上下文的...
这个过程是Spring框架启动时的核心步骤,为整个应用提供了IoC(Inversion of Control)容器,使得我们可以声明性地配置bean并管理它们的生命周期。当我们谈论“ContextLoader加载XML”时,我们关注的是如何通过XML...
- **ContextLoaderListener**:这是一个Servlet监听器,它会在Web应用启动时自动加载`/WEB-INF/applicationContext.xml`(默认配置)。 - **ContextLoaderServlet**:这是一个Servlet,同样用于初始化`...
这个过程确保了Spring容器在Web应用启动时被正确地创建和加载。 在`initWebApplicationContext`方法中,首先检查当前的ServletContext中是否已经存在一个根ApplicationContext。如果存在,则抛出`...
它是Spring在Web应用中的入口点,当Web容器启动时,如Tomcat或Jetty,会按照`web.xml`配置文件中的监听器部分进行初始化。`ContextLoaderListener`实现了`ServletContextListener`接口,该接口规定了两个方法:`...
org.springframework.web.context.ContextLoader.class org.springframework.web.context.ContextLoaderListener.class org.springframework.web.context.ContextLoaderServlet.class org.springframework.web....
1. **初始化流程**:从`org.springframework.context.support.ClassPathXmlApplicationContext`或`org.springframework.web.context.ContextLoader`开始,理解如何加载配置并创建Bean定义。 2. **依赖注入**:研究`...
控制反转是一种设计模式,它将对象的创建和管理从应用程序本身剥离出来,转交给一个外部容器(在 Spring 中即为 IoC 容器)。这使得组件之间的依赖关系不再硬编码,而是通过配置来定义。例如,在传统的开发方式中,...
ContextLoaderListener 是 Spring 框架中的一种监听器,它的主要作用是启动 Web 容器时,自动装配 ApplicationContext 的配置信息。它实现了 ServletContextListener 接口,在 web.xml 文件中配置这个监听器,启动...
对于一个Spring激活的web应用程序,可以通过使用Spring代码声明式的指定在web应用程序启动时载入应用程序上下文(WebApplicationContext),Spring的ContextLoader是提供这样性能的类,我们可以使用 ...
2. **创建BeanFactory实例**:接着,创建一个`DefaultListableBeanFactory`实例,它继承自`AbstractAutowireCapableBeanFactory`,是Spring IoC容器的核心实现之一。 ```java DefaultListableBeanFactory factory ...
总结来说,Spring在`web.xml`中的配置更加独立,它不依赖于任何特定的应用框架,而是在Web应用启动时独立初始化ApplicationContext。而在Struts中,Spring作为插件集成,依赖于Struts的执行流程来管理Bean。这两种...
当Web容器启动时,它会触发`ContextLoaderListener`,该监听器将读取并创建一个WebApplicationContext。这通常在`web.xml`文件中通过`<listener>`标签进行配置: ```xml <listener-class>org.springframework.web...
Spring Framework 是一个全面的Java应用开发框架,以其模块化、可扩展性和强大的功能著称。在4.3.12.RELEASE版本中,它引入了一系列的改进和优化,旨在提高性能,增强稳定性和提供更好的开发者体验。这个"spring-...
BeanFactoryPostProcessor是一个Spring的接口,用于在bean工厂启动时对bean进行后置处理。在这个接口中,我们可以实现bean id的唯一性校验,并报错提示。 使用监听器对Spring bean id进行唯一校验是解决bean id重复...
Spring Framework作为Java领域最广泛应用的轻量级框架之一,其3.2.5.RELEASE版本的源代码蕴含了丰富的设计思想和技术实现。深入理解这个版本的源代码,不仅可以帮助开发者提升对Spring的理解,也能更好地运用到实际...
`ContextLoaderListener`是Spring Web应用程序中最常用的启动类之一,它实现了`ServletContextListener`接口,用于在Servlet容器启动时加载Spring上下文。下面是对`ContextLoaderListener`的一些关键代码解析: ```...
总之,`ServletContextListener`是Spring MVC中一个强大且灵活的工具,它可以用于在应用程序启动时执行初始化操作,并在关闭时进行清理。结合Spring框架,我们可以有效地管理ApplicationContext,加载配置,以及执行...