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 through 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.ExistingWebApplicationScopesNested 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_NAMEFields 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 newAnnotationConfigServletWebServerApplicationContextthat 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 newAnnotationConfigServletWebServerApplicationContextwith the givenDefaultListableBeanFactory. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidpostProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) Register ServletContextAwareProcessor.protected voidfinal voidRegister one or more annotated classes to be processed.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 org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext
doClose, getResourceByPath, getServerNamespace, getServletConfig, getServletContextInitializerBeans, getWebServer, getWebServerFactory, onRefresh, prepareWebApplicationContext, refresh, setServerNamespace, setServletConfigMethods 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, publishEvent, publishEvent, publishEvent, registerBeanPostProcessors, registerListeners, registerShutdownHook, removeApplicationListener, resetCommonCaches, setDisplayName, 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, 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
-
Constructor Details
-
AnnotationConfigServletWebServerApplicationContext
public AnnotationConfigServletWebServerApplicationContext()Create a newAnnotationConfigServletWebServerApplicationContextthat needs to be populated throughregister(java.lang.Class<?>...)calls and then manually refreshed. -
AnnotationConfigServletWebServerApplicationContext
Create a newAnnotationConfigServletWebServerApplicationContextwith 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.@Configurationclasses
-
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
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 thatServletWebServerApplicationContext.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 thatServletWebServerApplicationContext.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
Description copied from class:ServletWebServerApplicationContextRegister ServletContextAwareProcessor.- Overrides:
postProcessBeanFactoryin classServletWebServerApplicationContext- See Also:
-