Class AnnotationConfigServletWebServerApplicationContext
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.server.servlet.context.ServletWebServerApplicationContext
org.springframework.boot.web.server.servlet.context.AnnotationConfigServletWebServerApplicationContext
- All Implemented Interfaces:
Closeable, AutoCloseable, BeanFactory, HierarchicalBeanFactory, ListableBeanFactory, BeanDefinitionRegistry, ConfigurableWebServerApplicationContext, WebServerApplicationContext, AnnotationConfigRegistry, ApplicationContext, ApplicationEventPublisher, ConfigurableApplicationContext, Lifecycle, MessageSource, AliasRegistry, EnvironmentCapable, ResourceLoader, ResourcePatternResolver, ConfigurableWebApplicationContext, WebApplicationContext
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 through an extra Configuration class.
- Since:
- 4.0.0
- Author:
- Phillip Webb
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from class ServletWebServerApplicationContext
ServletWebServerApplicationContext.ExistingWebApplicationScopesNested classes/interfaces inherited from class DefaultResourceLoader
DefaultResourceLoader.ClassPathContextResource -
Field Summary
Fields inherited from class ServletWebServerApplicationContext
DISPATCHER_SERVLET_NAMEFields inherited from class AbstractApplicationContext
APPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, 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_PREFIXFields inherited from interface WebApplicationContext
CONTEXT_ATTRIBUTES_BEAN_NAME, CONTEXT_PARAMETERS_BEAN_NAME, ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, SCOPE_APPLICATION, SCOPE_REQUEST, SCOPE_SESSION, SERVLET_CONTEXT_BEAN_NAMEFields inherited from interface WebServerApplicationContext
GRACEFUL_SHUTDOWN_PHASE, START_STOP_LIFECYCLE_PHASE -
Constructor Summary
ConstructorsConstructorDescriptionCreate a newAnnotationConfigServletWebServerApplicationContextthat needs to be populated throughregister(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 ServletWebServerApplicationContext
doClose, getResourceByPath, getServerNamespace, getServletConfig, getWebServer, getWebServerFactory, onRefresh, refresh, setServerNamespace, setServletConfigMethods inherited from class GenericWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getNamespace, getResourcePatternResolver, getServletContext, initPropertySources, setConfigLocation, setConfigLocations, setNamespace, 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, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setApplicationStartup, setClassLoader, setParent, setResourceLoaderMethods inherited from class 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, 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, pause, prepareBeanFactory, publishEvent, publishEvent, publishEvent, 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
getApplicationName, 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, 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
-
AnnotationConfigServletWebServerApplicationContext
public AnnotationConfigServletWebServerApplicationContext()Create a newAnnotationConfigServletWebServerApplicationContextthat needs to be populated throughregister(Class...)calls and then manually refreshed. -
AnnotationConfigServletWebServerApplicationContext
Create a newAnnotationConfigServletWebServerApplicationContextwith 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
-
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:
-