Class ServletWebServerApplicationContext
- All Implemented Interfaces:
Closeable,AutoCloseable,BeanFactory,HierarchicalBeanFactory,ListableBeanFactory,BeanDefinitionRegistry,ConfigurableWebServerApplicationContext,WebServerApplicationContext,ApplicationContext,ApplicationEventPublisher,ConfigurableApplicationContext,Lifecycle,MessageSource,AliasRegistry,EnvironmentCapable,ResourceLoader,ResourcePatternResolver,ThemeSource,ConfigurableWebApplicationContext,WebApplicationContext
- Direct Known Subclasses:
AnnotationConfigServletWebServerApplicationContext,XmlServletWebServerApplicationContext
WebApplicationContext that can be used to bootstrap itself from a contained
ServletWebServerFactory bean.
This context will create, initialize and run an WebServer by searching for a
single ServletWebServerFactory bean within the ApplicationContext
itself. The ServletWebServerFactory is free to use standard Spring concepts
(such as dependency injection, lifecycle callbacks and property placeholder variables).
In addition, any Servlet or Filter beans defined in the context will be
automatically registered with the web server. In the case of a single Servlet bean, the
'/' mapping will be used. If multiple Servlet beans are found then the lowercase bean
name will be used as a mapping prefix. Any Servlet named 'dispatcherServlet' will
always be mapped to '/'. Filter beans will be mapped to all URLs ('/*').
For more advanced configuration, the context can instead define beans that implement
the ServletContextInitializer interface (most often
ServletRegistrationBeans and/or FilterRegistrationBeans). To prevent
double registration, the use of ServletContextInitializer beans will disable
automatic Servlet and Filter bean registration.
Although this context can be used directly, most developers should consider using the
AnnotationConfigServletWebServerApplicationContext or
XmlServletWebServerApplicationContext variants.
- Since:
- 2.0.0
- Author:
- Phillip Webb, Dave Syer, Scott Frederick
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classUtility class to store and restore any user defined scopes.Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader
DefaultResourceLoader.ClassPathContextResource -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringConstant value for the DispatcherServlet bean name.Fields inherited from class org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, MESSAGE_SOURCE_BEAN_NAMEFields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX, FACTORY_BEAN_PREFIX_CHARFields inherited from interface org.springframework.context.ConfigurableApplicationContext
APPLICATION_STARTUP_BEAN_NAME, BOOTSTRAP_EXECUTOR_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_NAMEFields inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAMEFields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIXFields inherited from interface org.springframework.core.io.support.ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIXFields inherited from interface org.springframework.web.context.WebApplicationContext
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAME -
Constructor Summary
ConstructorsConstructorDescriptionCreate a newServletWebServerApplicationContext.Create a newServletWebServerApplicationContextwith the givenDefaultListableBeanFactory. -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoClose()protected ResourcegetResourceByPath(String path) Returns the namespace of the web server application context ornullif no namespace has been set.protected Collection<ServletContextInitializer>ReturnsServletContextInitializers that should be used with the embedded web server.Returns theWebServerthat was created by the context ornullif the server has not yet been created.protected ServletWebServerFactoryReturns theServletWebServerFactorythat should be used to create the embeddedWebServer.protected voidprotected voidpostProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) Register ServletContextAwareProcessor.protected voidprepareWebApplicationContext(ServletContext servletContext) Prepare theWebApplicationContextwith the given fully loadedServletContext.final voidrefresh()voidsetServerNamespace(String serverNamespace) Set the server namespace of the context.voidsetServletConfig(ServletConfig servletConfig) Methods inherited from class org.springframework.web.context.support.GenericWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourcePatternResolver, getServletContext, getTheme, initPropertySources, setConfigLocation, setConfigLocations, setNamespace, setServletContextMethods inherited from class org.springframework.context.support.GenericApplicationContext
cancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanDefinitionOverridable, isBeanNameInUse, refreshBeanFactory, refreshForAotProcessing, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setApplicationStartup, setClassLoader, setParent, setResourceLoaderMethods inherited from class org.springframework.context.support.AbstractApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, clearResourceCaches, close, containsBean, containsBeanDefinition, containsLocalBean, destroyBeans, findAllAnnotationsOnBean, 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, isClosed, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, registerBeanPostProcessors, registerListeners, registerShutdownHook, removeApplicationListener, resetCommonCaches, setDisplayName, setEnvironment, setId, start, stop, toStringMethods inherited from class org.springframework.core.io.DefaultResourceLoader
addProtocolResolver, getProtocolResolvers, getResourceCacheMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.core.AliasRegistry
getAliasesMethods inherited from interface org.springframework.context.ApplicationContext
getApplicationName, getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDateMethods inherited from interface org.springframework.context.ApplicationEventPublisher
publishEvent, publishEventMethods inherited from interface org.springframework.beans.factory.support.BeanDefinitionRegistry
containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNamesMethods inherited from interface org.springframework.beans.factory.BeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatchMethods inherited from interface org.springframework.context.ConfigurableApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getApplicationStartup, getBeanFactory, getEnvironment, isActive, isClosed, registerShutdownHook, removeApplicationListener, setApplicationStartup, setClassLoader, setEnvironment, setId, setParentMethods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory
containsLocalBean, getParentBeanFactoryMethods inherited from interface org.springframework.beans.factory.ListableBeanFactory
containsBeanDefinition, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotationMethods inherited from interface org.springframework.context.MessageSource
getMessage, getMessage, getMessageMethods inherited from interface org.springframework.core.io.ResourceLoader
getClassLoader, getResourceMethods inherited from interface org.springframework.core.io.support.ResourcePatternResolver
getResources
-
Field Details
-
DISPATCHER_SERVLET_NAME
Constant value for the DispatcherServlet bean name. A Servlet bean with this name is deemed to be the "main" servlet and is automatically given a mapping of "/" by default. To change the default behavior you can use aServletRegistrationBeanor a different bean name.- See Also:
-
-
Constructor Details
-
ServletWebServerApplicationContext
public ServletWebServerApplicationContext()Create a newServletWebServerApplicationContext. -
ServletWebServerApplicationContext
Create a newServletWebServerApplicationContextwith the givenDefaultListableBeanFactory.- Parameters:
beanFactory- the DefaultListableBeanFactory instance to use for this context
-
-
Method Details
-
postProcessBeanFactory
Register ServletContextAwareProcessor.- Overrides:
postProcessBeanFactoryin classGenericWebApplicationContext- See Also:
-
refresh
- Specified by:
refreshin interfaceConfigurableApplicationContext- Overrides:
refreshin classAbstractApplicationContext- Throws:
BeansExceptionIllegalStateException
-
onRefresh
protected void onRefresh()- Overrides:
onRefreshin classGenericWebApplicationContext
-
doClose
protected void doClose()- Overrides:
doClosein classAbstractApplicationContext
-
getWebServerFactory
Returns theServletWebServerFactorythat should be used to create the embeddedWebServer. By default this method searches for a suitable bean in the context itself.- Returns:
- a
ServletWebServerFactory(nevernull)
-
getServletContextInitializerBeans
ReturnsServletContextInitializers that should be used with the embedded web server. By default this method will first attempt to findServletContextInitializer,Servlet,Filterand certainEventListenerbeans.- Returns:
- the servlet initializer beans
-
prepareWebApplicationContext
Prepare theWebApplicationContextwith the given fully loadedServletContext. This method is usually called fromServletContextInitializer.onStartup(ServletContext)and is similar to the functionality usually provided by aContextLoaderListener.- Parameters:
servletContext- the operational servlet context
-
getResourceByPath
- Overrides:
getResourceByPathin classGenericWebApplicationContext
-
getServerNamespace
Description copied from interface:WebServerApplicationContextReturns the namespace of the web server application context ornullif no namespace has been set. Used for disambiguation when multiple web servers are running in the same application (for example a management context running on a different port).- Specified by:
getServerNamespacein interfaceWebServerApplicationContext- Returns:
- the server namespace
-
setServerNamespace
Description copied from interface:ConfigurableWebServerApplicationContextSet the server namespace of the context.- Specified by:
setServerNamespacein interfaceConfigurableWebServerApplicationContext- Parameters:
serverNamespace- the server namespace- See Also:
-
setServletConfig
- Specified by:
setServletConfigin interfaceConfigurableWebApplicationContext- Overrides:
setServletConfigin classGenericWebApplicationContext
-
getServletConfig
- Specified by:
getServletConfigin interfaceConfigurableWebApplicationContext- Overrides:
getServletConfigin classGenericWebApplicationContext
-
getWebServer
Returns theWebServerthat was created by the context ornullif the server has not yet been created.- Specified by:
getWebServerin interfaceWebServerApplicationContext- Returns:
- the embedded web server
-