public class GenericWebApplicationContext extends GenericApplicationContext implements ConfigurableWebApplicationContext, ThemeSource
GenericApplicationContext, suitable for web environments.
Implements ConfigurableWebApplicationContext, but is not intended for
declarative setup in web.xml. Instead, it is designed for programmatic setup,
for example for building nested contexts or for use within
WebApplicationInitializers.
Interprets resource paths as servlet context resources, i.e. as paths beneath
the web application root. Absolute paths — for example, for files outside
the web app root — can be accessed via file: URLs, as implemented
by AbstractApplicationContext.
In addition to the special beans detected by
AbstractApplicationContext,
this class detects a ThemeSource bean in the context, with the name "themeSource".
If you wish to register annotated component classes with a
GenericWebApplicationContext, you can use an
AnnotatedBeanDefinitionReader, as demonstrated in the following example.
Component classes include in particular
@Configuration
classes but also plain @Component
classes as well as JSR-330 compliant classes using javax.inject annotations.
GenericWebApplicationContext context = new GenericWebApplicationContext(); AnnotatedBeanDefinitionReader reader = new AnnotatedBeanDefinitionReader(context); reader.register(AppConfig.class, UserController.class, UserRepository.class);
If you intend to implement a WebApplicationContext that reads bean definitions
from configuration files, consider deriving from AbstractRefreshableWebApplicationContext,
reading the bean definitions in an implementation of the loadBeanDefinitions
method.
DefaultResourceLoader.ClassPathContextResourceAPPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAMEAPPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAMECONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAMEAPPLICATION_STARTUP_BEAN_NAME, CONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SHUTDOWN_HOOK_THREAD_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAMEFACTORY_BEAN_PREFIXCLASSPATH_ALL_URL_PREFIXCLASSPATH_URL_PREFIX| Constructor and Description |
|---|
GenericWebApplicationContext()
Create a new
GenericWebApplicationContext. |
GenericWebApplicationContext(DefaultListableBeanFactory beanFactory)
Create a new
GenericWebApplicationContext with the given DefaultListableBeanFactory. |
GenericWebApplicationContext(DefaultListableBeanFactory beanFactory,
ServletContext servletContext)
Create a new
GenericWebApplicationContext with the given DefaultListableBeanFactory
and ServletContext. |
GenericWebApplicationContext(ServletContext servletContext)
Create a new
GenericWebApplicationContext for the given ServletContext. |
| Modifier and Type | Method and Description |
|---|---|
protected ConfigurableEnvironment |
createEnvironment()
Create and return a new
StandardServletEnvironment. |
String |
getApplicationName()
Return a name for the deployed application that this context belongs to.
|
String[] |
getConfigLocations()
Return the config locations for this web application context,
or
null if none specified. |
String |
getNamespace()
Return the namespace for this web application context, if any.
|
protected Resource |
getResourceByPath(String path)
This implementation supports file paths beneath the root of the
ServletContext. |
protected ResourcePatternResolver |
getResourcePatternResolver()
This implementation supports pattern matching in unexpanded WARs too.
|
ServletConfig |
getServletConfig()
Return the ServletConfig for this web application context, if any.
|
ServletContext |
getServletContext()
Return the standard Servlet API ServletContext for this application.
|
Theme |
getTheme(String themeName)
Return the Theme instance for the given theme name.
|
protected void |
initPropertySources()
Replace any stub property sources with actual instances.
|
protected void |
onRefresh()
Initialize the theme capability.
|
protected void |
postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
Register request/session scopes, environment beans, a
ServletContextAwareProcessor, etc. |
void |
setConfigLocation(String configLocation)
Set the config locations for this web application context in init-param style,
i.e.
|
void |
setConfigLocations(String... configLocations)
Set the config locations for this web application context.
|
void |
setNamespace(String namespace)
Set the namespace for this web application context,
to be used for building a default context config location.
|
void |
setServletConfig(ServletConfig servletConfig)
Set the ServletConfig for this web application context.
|
void |
setServletContext(ServletContext servletContext)
Set the
ServletContext that this WebApplicationContext runs in. |
cancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setApplicationStartup, setClassLoader, setParent, setResourceLoaderaddApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, findAnnotationOnBean, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationStartup, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getStartupDate, getType, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, resetCommonCaches, setDisplayName, setEnvironment, setId, start, stop, toStringaddProtocolResolver, clearResourceCaches, getProtocolResolvers, getResourceCacheclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getApplicationStartup, getBeanFactory, getEnvironment, isActive, refresh, registerShutdownHook, setApplicationStartup, setClassLoader, setEnvironment, setId, setParentgetAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDatecontainsBeanDefinition, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotationcontainsLocalBean, getParentBeanFactorycontainsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatchgetMessage, getMessage, getMessagepublishEvent, publishEventgetResourcesgetClassLoader, getResourcecontainsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNamesgetAliasespublic GenericWebApplicationContext()
GenericWebApplicationContext.public GenericWebApplicationContext(ServletContext servletContext)
GenericWebApplicationContext for the given ServletContext.servletContext - the ServletContext to run inGenericApplicationContext.registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition),
AbstractApplicationContext.refresh()public GenericWebApplicationContext(DefaultListableBeanFactory beanFactory)
GenericWebApplicationContext with the given DefaultListableBeanFactory.beanFactory - the DefaultListableBeanFactory instance to use for this contextsetServletContext(javax.servlet.ServletContext),
GenericApplicationContext.registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition),
AbstractApplicationContext.refresh()public GenericWebApplicationContext(DefaultListableBeanFactory beanFactory, ServletContext servletContext)
GenericWebApplicationContext with the given DefaultListableBeanFactory
and ServletContext.beanFactory - the DefaultListableBeanFactory instance to use for this contextservletContext - the ServletContext to run inGenericApplicationContext.registerBeanDefinition(java.lang.String, org.springframework.beans.factory.config.BeanDefinition),
AbstractApplicationContext.refresh()public void setServletContext(@Nullable ServletContext servletContext)
ServletContext that this WebApplicationContext runs in.setServletContext in interface ConfigurableWebApplicationContextConfigurableApplicationContext.refresh()@Nullable public ServletContext getServletContext()
WebApplicationContextgetServletContext in interface WebApplicationContextpublic String getApplicationName()
ApplicationContextgetApplicationName in interface ApplicationContextgetApplicationName in class AbstractApplicationContextprotected ConfigurableEnvironment createEnvironment()
StandardServletEnvironment.createEnvironment in class AbstractApplicationContextprotected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
ServletContextAwareProcessor, etc.postProcessBeanFactory in class AbstractApplicationContextbeanFactory - the bean factory used by the application contextprotected Resource getResourceByPath(String path)
ServletContext.getResourceByPath in class DefaultResourceLoaderpath - the path to the resourceServletContextResourceprotected ResourcePatternResolver getResourcePatternResolver()
getResourcePatternResolver in class AbstractApplicationContextServletContextResourcePatternResolverprotected void onRefresh()
onRefresh in class AbstractApplicationContextAbstractApplicationContext.refresh()protected void initPropertySources()
Replace any stub property sources with actual instances.
Replace Servlet-related property sources.
@Nullable public Theme getTheme(String themeName)
ThemeSourceThe returned Theme will resolve theme-specific messages, codes, file paths, etc (e.g. CSS and image files in a web environment).
getTheme in interface ThemeSourcethemeName - the name of the themenull if none defined.
Note that, by convention, a ThemeSource should at least be able to
return a default Theme for the default theme name "theme" but may also
return default Themes for other theme names.AbstractThemeResolver.ORIGINAL_DEFAULT_THEME_NAMEpublic void setServletConfig(@Nullable ServletConfig servletConfig)
ConfigurableWebApplicationContextsetServletConfig in interface ConfigurableWebApplicationContextConfigurableApplicationContext.refresh()@Nullable public ServletConfig getServletConfig()
ConfigurableWebApplicationContextgetServletConfig in interface ConfigurableWebApplicationContextpublic void setNamespace(@Nullable String namespace)
ConfigurableWebApplicationContextsetNamespace in interface ConfigurableWebApplicationContext@Nullable public String getNamespace()
ConfigurableWebApplicationContextgetNamespace in interface ConfigurableWebApplicationContextpublic void setConfigLocation(String configLocation)
ConfigurableWebApplicationContextIf not set, the implementation is supposed to use a default for the given namespace or the root web application context, as appropriate.
setConfigLocation in interface ConfigurableWebApplicationContextpublic void setConfigLocations(String... configLocations)
ConfigurableWebApplicationContextIf not set, the implementation is supposed to use a default for the given namespace or the root web application context, as appropriate.
setConfigLocations in interface ConfigurableWebApplicationContextpublic String[] getConfigLocations()
ConfigurableWebApplicationContextnull if none specified.getConfigLocations in interface ConfigurableWebApplicationContext