public class AnnotationConfigServletWebServerApplicationContext extends ServletWebServerApplicationContext implements AnnotationConfigRegistry
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.
register(Class...),
scan(String...),
ServletWebServerApplicationContext,
AnnotationConfigServletWebApplicationContextServletWebServerApplicationContext.ExistingWebApplicationScopesDefaultResourceLoader.ClassPathContextResourceDISPATCHER_SERVLET_NAMEAPPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, MESSAGE_SOURCE_BEAN_NAMECONFIG_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_PREFIXAPPLICATION_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_NAME| Constructor and Description |
|---|
AnnotationConfigServletWebServerApplicationContext()
Create a new
AnnotationConfigServletWebServerApplicationContext that needs
to be populated through register(java.lang.Class<?>...) calls and then manually
refreshed. |
AnnotationConfigServletWebServerApplicationContext(Class<?>... annotatedClasses)
Create a new
AnnotationConfigServletWebServerApplicationContext, deriving
bean definitions from the given annotated classes and automatically refreshing the
context. |
AnnotationConfigServletWebServerApplicationContext(DefaultListableBeanFactory beanFactory)
Create a new
AnnotationConfigServletWebServerApplicationContext with the
given DefaultListableBeanFactory. |
AnnotationConfigServletWebServerApplicationContext(String... basePackages)
Create a new
AnnotationConfigServletWebServerApplicationContext, scanning
for bean definitions in the given packages and automatically refreshing the
context. |
| Modifier and Type | Method and Description |
|---|---|
protected void |
postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
Register ServletContextAwareProcessor.
|
protected void |
prepareRefresh() |
void |
register(Class<?>... annotatedClasses)
Register one or more annotated classes to be processed.
|
void |
scan(String... basePackages)
Perform a scan within the specified base packages.
|
void |
setBeanNameGenerator(BeanNameGenerator beanNameGenerator)
Provide a custom
BeanNameGenerator for use with
AnnotatedBeanDefinitionReader and/or
ClassPathBeanDefinitionScanner, if any. |
void |
setEnvironment(ConfigurableEnvironment environment) |
void |
setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)
Set the
ScopeMetadataResolver to use for detected bean classes. |
doClose, getResourceByPath, getServerNamespace, getServletConfig, getServletContextInitializerBeans, getWebServer, getWebServerFactory, onRefresh, prepareWebApplicationContext, refresh, setServerNamespace, setServletConfigcreateEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourcePatternResolver, getServletContext, getTheme, initPropertySources, setConfigLocation, setConfigLocations, setNamespace, setServletContextcancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setClassLoader, setParent, setResourceLoaderaddApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, 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, resetCommonCaches, setDisplayName, setId, start, stop, toStringaddProtocolResolver, clearResourceCaches, getProtocolResolvers, getResourceCacheclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getBeanFactory, getEnvironment, isActive, registerShutdownHook, setClassLoader, setId, setParenthasServerNamespacegetApplicationName, getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDatecontainsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotationcontainsLocalBean, getParentBeanFactorycontainsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatchgetMessage, getMessage, getMessagepublishEvent, publishEventgetResourcesgetClassLoader, getResourcecontainsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNamesgetAliasespublic AnnotationConfigServletWebServerApplicationContext()
AnnotationConfigServletWebServerApplicationContext that needs
to be populated through register(java.lang.Class<?>...) calls and then manually
refreshed.public AnnotationConfigServletWebServerApplicationContext(DefaultListableBeanFactory beanFactory)
AnnotationConfigServletWebServerApplicationContext with the
given DefaultListableBeanFactory. The context needs to be populated through
register(java.lang.Class<?>...) calls and then manually refreshed.beanFactory - the DefaultListableBeanFactory instance to use for this contextpublic AnnotationConfigServletWebServerApplicationContext(Class<?>... annotatedClasses)
AnnotationConfigServletWebServerApplicationContext, deriving
bean definitions from the given annotated classes and automatically refreshing the
context.annotatedClasses - one or more annotated classes, e.g. @Configuration
classespublic AnnotationConfigServletWebServerApplicationContext(String... basePackages)
AnnotationConfigServletWebServerApplicationContext, scanning
for bean definitions in the given packages and automatically refreshing the
context.basePackages - the packages to check for annotated classespublic void setEnvironment(ConfigurableEnvironment environment)
Delegates given environment to underlying AnnotatedBeanDefinitionReader and
ClassPathBeanDefinitionScanner members.
setEnvironment in interface ConfigurableApplicationContextsetEnvironment in class AbstractApplicationContextpublic void setBeanNameGenerator(BeanNameGenerator beanNameGenerator)
BeanNameGenerator for use with
AnnotatedBeanDefinitionReader and/or
ClassPathBeanDefinitionScanner, if any.
Default is
AnnotationBeanNameGenerator.
Any call to this method must occur prior to calls to register(Class...)
and/or scan(String...).
beanNameGenerator - the bean name generatorAnnotatedBeanDefinitionReader.setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator),
ClassPathBeanDefinitionScanner.setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator)public void setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)
ScopeMetadataResolver 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/or scan(String...).
scopeMetadataResolver - the scope metadata resolverpublic final void register(Class<?>... annotatedClasses)
ServletWebServerApplicationContext.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.
register in interface AnnotationConfigRegistryannotatedClasses - one or more annotated classes, e.g. @Configuration
classesscan(String...),
ServletWebServerApplicationContext.refresh()public final void scan(String... basePackages)
ServletWebServerApplicationContext.refresh()
must be called in order for the context to fully process the new class.scan in interface AnnotationConfigRegistrybasePackages - the packages to check for annotated classesregister(Class...),
ServletWebServerApplicationContext.refresh()protected void prepareRefresh()
prepareRefresh in class AbstractApplicationContextprotected void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
ServletWebServerApplicationContextpostProcessBeanFactory in class ServletWebServerApplicationContextServletContextAwareProcessor