public class ContextLoader {
public static final String CONTEXT_CLASS_PARAM = "contextClass";
//此处定义了spring配置文件的参数名称,和web.xml中的
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml,/WEB-INF/dataAccessContext-IBatis.xml</param-value>
</context-param>
完全对应,这个名字是不可更改的
public static final String CONFIG_LOCATION_PARAM = "contextConfigLocation";
public static final String LOCATOR_FACTORY_SELECTOR_PARAM = "locatorFactorySelector";
public static final String LOCATOR_FACTORY_KEY_PARAM = "parentContextKey";
private static final String DEFAULT_STRATEGIES_PATH = "ContextLoader.properties";
private static final Properties defaultStrategies;
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());
}
}
private final Log logger = LogFactory.getLog(ContextLoader.class);
/**
* The root WebApplicationContext instance that this loader manages.
*/
private WebApplicationContext context;
/**
* Holds BeanFactoryReference when loading parent factory via
* ContextSingletonBeanFactoryLocator.
*/
private BeanFactoryReference parentContextRef;
.......
protected WebApplicationContext createWebApplicationContext(
ServletContext servletContext, ApplicationContext parent) throws BeansException {
Class contextClass = determineContextClass(servletContext);
if (!ConfigurableWebApplicationContext.class.isAssignableFrom(contextClass)) {
throw new ApplicationContextException("Custom context class [" + contextClass.getName() +
"] is not of type [" + ConfigurableWebApplicationContext.class.getName() + "]");
}
ConfigurableWebApplicationContext wac =
(ConfigurableWebApplicationContext) BeanUtils.instantiateClass(contextClass);
wac.setParent(parent);
wac.setServletContext(servletContext);
//这里getInitParameter()方法概述:public java.lang.String getInitParameter(java.lang.String name)返回上下文定义的变量的值,如果变量不存在,返回null。见ServletConfig.getInitParameter (java.lang.String)。
String configLocation = servletContext.getInitParameter(CONFIG_LOCATION_PARAM);
//最后使用configLocation初始化wac对象
if (configLocation != null) {
wac.setConfigLocations(StringUtils.tokenizeToStringArray(configLocation,
ConfigurableWebApplicationContext.CONFIG_LOCATION_DELIMITERS));
}
wac.refresh();
return wac;
}
.......
}
分享到:
相关推荐
org.springframework.web.context.ContextLoader.class org.springframework.web.context.ContextLoaderListener.class org.springframework.web.context.ContextLoaderServlet.class org.springframework.web....
这个过程可以通过时序图来形象地表示,从`ContextLoaderListener`开始,调用`ContextLoader`,然后初始化`WebApplicationContext`,完成整个Spring容器的初始化。 总结来说,Spring在容器启动时,通过`...
在Spring框架中,`ContextLoader`是一个至关重要的组件,它负责初始化和加载应用程序上下文(ApplicationContext)。这个过程是Spring框架启动时的核心步骤,为整个应用提供了IoC(Inversion of Control)容器,使得...
1. **初始化流程**:从`org.springframework.context.support.ClassPathXmlApplicationContext`或`org.springframework.web.context.ContextLoader`开始,理解如何加载配置并创建Bean定义。 2. **依赖注入**:研究`...
对于一个Spring激活的web应用程序,可以通过使用Spring代码声明式的指定在web应用程序启动时载入应用程序上下文(WebApplicationContext),Spring的ContextLoader是提供这样性能的类,我们可以使用 ...
`ContextLoaderListener`的`contextInitialized`方法主要负责调用`initWebApplicationContext`方法,该方法在`ContextLoader`类中实现,其作用是初始化Web环境下的Spring应用上下文(ApplicationContext)。...
如果需要引入多个配置文件,可以使用 `ContextLoader` 或 `AnnotationConfigApplicationContext`,并传入配置文件路径或配置类数组。 Spring 框架的强大之处在于它的灵活性和全面性。通过 IoC 和 AOP,Spring 降低...
- **ContextLoader**:提供了一种机制来加载ApplicationContext到Web应用程序上下文中。 - **AbstractApplicationContext**:所有具体ApplicationContext实现的基础类,提供了通用的功能。 - **...
Spring Framework 是一个全面的Java应用开发框架,以其模块化、可扩展性和强大的功能...Spring 4.3.12.RELEASE的每一个子模块都是经过精心设计和优化的,旨在提高开发效率,减少出错概率,同时保持代码的清晰和简洁。
这个监听器是Spring Web应用程序的核心组件,它继承自`ContextLoader`,并在Web容器启动时执行`contextInitialized`方法。在这个方法中,`ContextLoader`会调用`initWebApplicationContext`,这是启动Web上下文的...
Spring为测试提供了便利,`org.springframework.test`包下的`ContextLoader`、`TestContext`等类可以帮助开发者进行单元测试和集成测试,提高测试覆盖率。 8. **Spring Expression Language (SpEL)** SpEL是...
这样,Spring 中的所有 bean 都由这个类来创建。 其次,ContextLoaderListener 负责部署 applicationContext 的 xml 文件。在 web.xml 文件中,如果不写任何参数配置信息,默认的路径是"/WEB-INF/...
Spring框架的强大之处在于其高度的灵活性和可扩展性,无论是通过监听器还是Servlet,亦或是其他各种机制,都能有效地管理和控制Web应用程序的生命周期。通过对Spring配置的深入了解,开发人员能够更好地利用框架提供...
在Spring中,Bean的实例化、管理和依赖注入都在这个容器中完成。 在`web.xml`中配置Spring,主要涉及两步。第一步是定义`context-param`,指定Spring的配置文件路径,例如: ```xml <param-name>...
在Spring项目中,监听器(Listener)扮演着关键的角色,特别是在Web应用程序的上下文管理方面。本文将深入探讨Spring框架中的监听器,特别是`ContextLoaderListener`的作用及其配置。 `ContextLoaderListener`是...
①在web.xml中配置ApplicationContext.xml,并使用ContextLoader监听器实例化spring容器 ②把action交给spring管理,即在spring配置文件中定义action Bean并使用依赖注入功能在action中注入业务Bean,同时修改作用域...
首先,我们需要自定义一个ContextLoader,继承自Spring的ContextLoader类。在这个类中,我们需要Override customizeContext方法,在这个方法中,我们可以设置allowBeanDefinitionOverriding属性为false,从而实现...
在Web应用中,Spring提供了`org.springframework.web.context.ContextLoader`类来加载`WebApplicationContext`。有两种主要的加载方式: - **ContextLoaderListener**:这是一个Servlet监听器,它会在Web应用启动...
ContextLoader ContextLoaderListener ContextLoaderPlugIn ContextLoaderServlet ContextRefreshedEvent ContextSingletonBeanFactoryLocator ControlFlow ControlFlowFactory ControlFlowFactory.Jdk13...