Class AnnotationConfigServletWebServerApplicationContext
- All Implemented Interfaces:
Closeable
,AutoCloseable
,BeanFactory
,HierarchicalBeanFactory
,ListableBeanFactory
,BeanDefinitionRegistry
,ConfigurableWebServerApplicationContext
,WebServerApplicationContext
,AnnotationConfigRegistry
,ApplicationContext
,ApplicationEventPublisher
,ConfigurableApplicationContext
,Lifecycle
,MessageSource
,AliasRegistry
,EnvironmentCapable
,ResourceLoader
,ResourcePatternResolver
,ThemeSource
,ConfigurableWebApplicationContext
,WebApplicationContext
ServletWebServerApplicationContext
that accepts annotated classes as input - in
particular @Configuration
-annotated classes, but also plain @Component
classes and JSR-330
compliant classes using javax.inject
annotations. Allows for registering
classes one by one (specifying class names as config location) as well as for classpath
scanning (specifying base packages as config location).
Note: In case of multiple @Configuration
classes, later @Bean
definitions will override ones defined in earlier loaded files. This can be leveraged
to deliberately override certain bean definitions via an extra Configuration class.
- Since:
- 1.0.0
- Author:
- Phillip Webb
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext
ServletWebServerApplicationContext.ExistingWebApplicationScopes
Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader
DefaultResourceLoader.ClassPathContextResource
-
Field Summary
Fields inherited from class org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext
DISPATCHER_SERVLET_NAME
Fields inherited from class org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, MESSAGE_SOURCE_BEAN_NAME
Fields inherited from interface org.springframework.beans.factory.BeanFactory
FACTORY_BEAN_PREFIX
Fields inherited from interface org.springframework.context.ConfigurableApplicationContext
APPLICATION_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_NAME
Fields inherited from interface org.springframework.web.context.ConfigurableWebApplicationContext
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
Fields inherited from interface org.springframework.core.io.ResourceLoader
CLASSPATH_URL_PREFIX
Fields inherited from interface org.springframework.core.io.support.ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIX
Fields 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
ConstructorDescriptionCreate a newAnnotationConfigServletWebServerApplicationContext
that needs to be populated throughregister(java.lang.Class<?>...)
calls and then manually refreshed.AnnotationConfigServletWebServerApplicationContext
(Class<?>... annotatedClasses) Create a newAnnotationConfigServletWebServerApplicationContext
, deriving bean definitions from the given annotated classes and automatically refreshing the context.AnnotationConfigServletWebServerApplicationContext
(String... basePackages) Create a newAnnotationConfigServletWebServerApplicationContext
, scanning for bean definitions in the given packages and automatically refreshing the context.Create a newAnnotationConfigServletWebServerApplicationContext
with the givenDefaultListableBeanFactory
. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
postProcessBeanFactory
(ConfigurableListableBeanFactory beanFactory) Register ServletContextAwareProcessor.protected void
final void
Register one or more annotated classes to be processed.final void
Perform a scan within the specified base packages.void
setBeanNameGenerator
(BeanNameGenerator beanNameGenerator) Provide a customBeanNameGenerator
for use withAnnotatedBeanDefinitionReader
and/orClassPathBeanDefinitionScanner
, if any.void
setEnvironment
(ConfigurableEnvironment environment) void
setScopeMetadataResolver
(ScopeMetadataResolver scopeMetadataResolver) Set theScopeMetadataResolver
to use for detected bean classes.Methods inherited from class org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext
doClose, getResourceByPath, getServerNamespace, getServletConfig, getServletContextInitializerBeans, getWebServer, getWebServerFactory, onRefresh, prepareWebApplicationContext, refresh, setServerNamespace, setServletConfig
Methods inherited from class org.springframework.web.context.support.GenericWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourcePatternResolver, getServletContext, getTheme, initPropertySources, setConfigLocation, setConfigLocations, setNamespace, setServletContext
Methods inherited from class org.springframework.context.support.GenericApplicationContext
cancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, refreshForAotProcessing, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setApplicationStartup, setClassLoader, setParent, setResourceLoader
Methods inherited from class org.springframework.context.support.AbstractApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, destroyBeans, 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, publishEvent, publishEvent, publishEvent, registerBeanPostProcessors, registerListeners, registerShutdownHook, removeApplicationListener, resetCommonCaches, setDisplayName, setId, start, stop, toString
Methods inherited from class org.springframework.core.io.DefaultResourceLoader
addProtocolResolver, clearResourceCaches, getProtocolResolvers, getResourceCache
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.core.AliasRegistry
getAliases
Methods inherited from interface org.springframework.context.ApplicationContext
getApplicationName, getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
Methods inherited from interface org.springframework.context.ApplicationEventPublisher
publishEvent, publishEvent
Methods inherited from interface org.springframework.beans.factory.support.BeanDefinitionRegistry
containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNames
Methods inherited from interface org.springframework.beans.factory.BeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatch
Methods inherited from interface org.springframework.context.ConfigurableApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getApplicationStartup, getBeanFactory, getEnvironment, isActive, registerShutdownHook, removeApplicationListener, setApplicationStartup, setClassLoader, setId, setParent
Methods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory
containsLocalBean, getParentBeanFactory
Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory
containsBeanDefinition, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotation
Methods inherited from interface org.springframework.context.MessageSource
getMessage, getMessage, getMessage
Methods inherited from interface org.springframework.core.io.ResourceLoader
getClassLoader, getResource
Methods inherited from interface org.springframework.core.io.support.ResourcePatternResolver
getResources
-
Constructor Details
-
AnnotationConfigServletWebServerApplicationContext
public AnnotationConfigServletWebServerApplicationContext()Create a newAnnotationConfigServletWebServerApplicationContext
that needs to be populated throughregister(java.lang.Class<?>...)
calls and then manually refreshed. -
AnnotationConfigServletWebServerApplicationContext
Create a newAnnotationConfigServletWebServerApplicationContext
with the givenDefaultListableBeanFactory
. The context needs to be populated throughregister(java.lang.Class<?>...)
calls and then manually refreshed.- Parameters:
beanFactory
- the DefaultListableBeanFactory instance to use for this context
-
AnnotationConfigServletWebServerApplicationContext
Create a newAnnotationConfigServletWebServerApplicationContext
, deriving bean definitions from the given annotated classes and automatically refreshing the context.- Parameters:
annotatedClasses
- one or more annotated classes, e.g.@Configuration
classes
-
AnnotationConfigServletWebServerApplicationContext
Create a newAnnotationConfigServletWebServerApplicationContext
, scanning for bean definitions in the given packages and automatically refreshing the context.- Parameters:
basePackages
- the packages to check for annotated classes
-
-
Method Details
-
setEnvironment
Delegates given environment to underlying
AnnotatedBeanDefinitionReader
andClassPathBeanDefinitionScanner
members.- Specified by:
setEnvironment
in interfaceConfigurableApplicationContext
- Overrides:
setEnvironment
in classAbstractApplicationContext
-
setBeanNameGenerator
Provide a customBeanNameGenerator
for use withAnnotatedBeanDefinitionReader
and/orClassPathBeanDefinitionScanner
, if any.Default is
AnnotationBeanNameGenerator
.Any call to this method must occur prior to calls to
register(Class...)
and/orscan(String...)
.- Parameters:
beanNameGenerator
- the bean name generator- See Also:
-
setScopeMetadataResolver
Set theScopeMetadataResolver
to use for detected bean classes.The default is an
AnnotationScopeMetadataResolver
.Any call to this method must occur prior to calls to
register(Class...)
and/orscan(String...)
.- Parameters:
scopeMetadataResolver
- the scope metadata resolver
-
register
Register one or more annotated classes to be processed. Note thatServletWebServerApplicationContext.refresh()
must be called in order for the context to fully process the new class.Calls to
#register
are idempotent; adding the same annotated class more than once has no additional effect.- Specified by:
register
in interfaceAnnotationConfigRegistry
- Parameters:
annotatedClasses
- one or more annotated classes, e.g.@Configuration
classes- See Also:
-
scan
Perform a scan within the specified base packages. Note thatServletWebServerApplicationContext.refresh()
must be called in order for the context to fully process the new class.- Specified by:
scan
in interfaceAnnotationConfigRegistry
- Parameters:
basePackages
- the packages to check for annotated classes- See Also:
-
prepareRefresh
protected void prepareRefresh()- Overrides:
prepareRefresh
in classAbstractApplicationContext
-
postProcessBeanFactory
Description copied from class:ServletWebServerApplicationContext
Register ServletContextAwareProcessor.- Overrides:
postProcessBeanFactory
in classServletWebServerApplicationContext
- See Also:
-