Class AnnotationConfigServletWebApplicationContext
java.lang.Object
org.springframework.core.io.DefaultResourceLoader
org.springframework.context.support.AbstractApplicationContext
org.springframework.context.support.GenericApplicationContext
org.springframework.web.context.support.GenericWebApplicationContext
org.springframework.boot.web.context.servlet.AnnotationConfigServletWebApplicationContext
- All Implemented Interfaces:
Closeable, AutoCloseable, BeanFactory, HierarchicalBeanFactory, ListableBeanFactory, BeanDefinitionRegistry, AnnotationConfigRegistry, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, AliasRegistry, EnvironmentCapable, ResourceLoader, ResourcePatternResolver, ConfigurableWebApplicationContext, WebApplicationContext
public class AnnotationConfigServletWebApplicationContext
extends GenericWebApplicationContext
implements AnnotationConfigRegistry
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 through an extra Configuration class.
- Since:
- 2.2.0
- Author:
- Stephane Nicoll
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class DefaultResourceLoader
DefaultResourceLoader.ClassPathContextResource -
Field Summary
Fields inherited from class AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAMEFields inherited from interface BeanFactory
FACTORY_BEAN_PREFIX, FACTORY_BEAN_PREFIX_CHARFields inherited from interface 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 ConfigurableWebApplicationContext
APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAMEFields inherited from interface ResourceLoader
CLASSPATH_URL_PREFIXFields inherited from interface ResourcePatternResolver
CLASSPATH_ALL_URL_PREFIX -
Constructor Summary
ConstructorsConstructorDescriptionCreate a newAnnotationConfigServletWebApplicationContextthat needs to be populated throughregister(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 newAnnotationConfigServletWebApplicationContextwith the givenDefaultListableBeanFactory. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidpostProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) protected voidfinal voidRegister one or more annotated classes to be processed.<T> voidregisterBean(@Nullable String beanName, Class<T> beanClass, @Nullable Supplier<T> supplier, BeanDefinitionCustomizer... customizers) final voidPerform a scan within the specified base packages.voidsetBeanNameGenerator(BeanNameGenerator beanNameGenerator) Provide a customBeanNameGeneratorfor use withAnnotatedBeanDefinitionReaderand/orClassPathBeanDefinitionScanner, if any.voidsetEnvironment(ConfigurableEnvironment environment) voidsetScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver) Set theScopeMetadataResolverto use for detected bean classes.Methods inherited from class GenericWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourceByPath, getResourcePatternResolver, getServletConfig, getServletContext, initPropertySources, setConfigLocation, setConfigLocations, setNamespace, setServletConfig, setServletContextMethods inherited from class GenericApplicationContext
cancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanDefinitionOverridable, isBeanNameInUse, refreshBeanFactory, refreshForAotProcessing, register, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setApplicationStartup, setClassLoader, setParent, setResourceLoaderMethods inherited from class AbstractApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, clearResourceCaches, close, containsBean, containsBeanDefinition, containsLocalBean, destroyBeans, doClose, 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, 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, onRefresh, pause, prepareBeanFactory, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, removeApplicationListener, resetCommonCaches, restart, setDisplayName, setId, start, stop, toStringMethods inherited from class DefaultResourceLoader
addProtocolResolver, getProtocolResolvers, getResourceCacheMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface AliasRegistry
getAliasesMethods inherited from interface AnnotationConfigRegistry
registerMethods inherited from interface ApplicationContext
getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDateMethods inherited from interface ApplicationEventPublisher
publishEvent, publishEventMethods inherited from interface BeanDefinitionRegistry
containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNamesMethods inherited from interface BeanFactory
containsBean, getAliases, getBean, getBean, getBean, getBean, getBean, getBeanProvider, getBeanProvider, getBeanProvider, getType, getType, isPrototype, isSingleton, isTypeMatch, isTypeMatchMethods inherited from interface ConfigurableApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getApplicationStartup, getBeanFactory, getEnvironment, isActive, isClosed, pause, refresh, registerShutdownHook, removeApplicationListener, restart, setApplicationStartup, setClassLoader, setId, setParentMethods inherited from interface HierarchicalBeanFactory
containsLocalBean, getParentBeanFactoryMethods inherited from interface ListableBeanFactory
containsBeanDefinition, findAllAnnotationsOnBean, findAnnotationOnBean, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanProvider, getBeanProvider, getBeansOfType, getBeansOfType, getBeansWithAnnotationMethods inherited from interface MessageSource
getMessage, getMessage, getMessageMethods inherited from interface ResourceLoader
getClassLoader, getResourceMethods inherited from interface ResourcePatternResolver
getResources
-
Constructor Details
-
AnnotationConfigServletWebApplicationContext
public AnnotationConfigServletWebApplicationContext()Create a newAnnotationConfigServletWebApplicationContextthat needs to be populated throughregister(Class...)calls and then manually refreshed. -
AnnotationConfigServletWebApplicationContext
Create a newAnnotationConfigServletWebApplicationContextwith the givenDefaultListableBeanFactory. The context needs to be populated throughregister(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.@Configurationclasses
-
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
AnnotatedBeanDefinitionReaderandClassPathBeanDefinitionScannermembers.- Specified by:
setEnvironmentin interfaceConfigurableApplicationContext- Overrides:
setEnvironmentin classAbstractApplicationContext
-
setBeanNameGenerator
Provide a customBeanNameGeneratorfor use withAnnotatedBeanDefinitionReaderand/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 theScopeMetadataResolverto 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
#registerare idempotent; adding the same annotated class more than once has no additional effect.- Specified by:
registerin interfaceAnnotationConfigRegistry- Parameters:
annotatedClasses- one or more annotated classes, e.g.@Configurationclasses- 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:
scanin interfaceAnnotationConfigRegistry- Parameters:
basePackages- the packages to check for annotated classes- See Also:
-
prepareRefresh
protected void prepareRefresh()- Overrides:
prepareRefreshin classAbstractApplicationContext
-
postProcessBeanFactory
- Overrides:
postProcessBeanFactoryin classGenericWebApplicationContext
-
registerBean
public <T> void registerBean(@Nullable String beanName, Class<T> beanClass, @Nullable Supplier<T> supplier, BeanDefinitionCustomizer... customizers) - Overrides:
registerBeanin classGenericApplicationContext
-