Class AnnotationConfigServletWebApplicationContext
- All Implemented Interfaces:
Closeable
,AutoCloseable
,BeanFactory
,HierarchicalBeanFactory
,ListableBeanFactory
,BeanDefinitionRegistry
,AnnotationConfigRegistry
,ApplicationContext
,ApplicationEventPublisher
,ConfigurableApplicationContext
,Lifecycle
,MessageSource
,AliasRegistry
,EnvironmentCapable
,ResourceLoader
,ResourcePatternResolver
,ThemeSource
,ConfigurableWebApplicationContext
,WebApplicationContext
GenericWebApplicationContext
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:
- 2.2.0
- Author:
- Stephane Nicoll
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader
DefaultResourceLoader.ClassPathContextResource
-
Field Summary
Fields inherited from class org.springframework.context.support.AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, 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 newAnnotationConfigServletWebApplicationContext
that needs to be populated throughregister(java.lang.Class<?>...)
calls and then manually refreshed.AnnotationConfigServletWebApplicationContext
(Class<?>... annotatedClasses) Create a newAnnotationConfigServletWebApplicationContext
, deriving bean definitions from the given annotated classes and automatically refreshing the context.AnnotationConfigServletWebApplicationContext
(String... basePackages) Create a newAnnotationConfigServletWebApplicationContext
, scanning for bean definitions in the given packages and automatically refreshing the context.Create a newAnnotationConfigServletWebApplicationContext
with the givenDefaultListableBeanFactory
. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
postProcessBeanFactory
(ConfigurableListableBeanFactory beanFactory) protected void
final void
Register one or more annotated classes to be processed.<T> void
registerBean
(String beanName, Class<T> beanClass, Supplier<T> supplier, BeanDefinitionCustomizer... customizers) 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.web.context.support.GenericWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, getTheme, initPropertySources, onRefresh, setConfigLocation, setConfigLocations, setNamespace, setServletConfig, 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, 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, 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, publishEvent, publishEvent, publishEvent, refresh, 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
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, refresh, 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
-
AnnotationConfigServletWebApplicationContext
public AnnotationConfigServletWebApplicationContext()Create a newAnnotationConfigServletWebApplicationContext
that needs to be populated throughregister(java.lang.Class<?>...)
calls and then manually refreshed. -
AnnotationConfigServletWebApplicationContext
Create a newAnnotationConfigServletWebApplicationContext
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
-
AnnotationConfigServletWebApplicationContext
Create a newAnnotationConfigServletWebApplicationContext
, deriving bean definitions from the given annotated classes and automatically refreshing the context.- Parameters:
annotatedClasses
- one or more annotated classes, e.g.@Configuration
classes
-
AnnotationConfigServletWebApplicationContext
Create a newAnnotationConfigServletWebApplicationContext
, 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 thatAbstractApplicationContext.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 thatAbstractApplicationContext.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
- Overrides:
postProcessBeanFactory
in classGenericWebApplicationContext
-
registerBean
public <T> void registerBean(String beanName, Class<T> beanClass, Supplier<T> supplier, BeanDefinitionCustomizer... customizers) - Overrides:
registerBean
in classGenericApplicationContext
-