org.springframework.boot.web.servlet.context

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.servlet.context.AnnotationConfigServletWebApplicationContext
  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, org.springframework.beans.factory.BeanFactory, org.springframework.beans.factory.HierarchicalBeanFactory, org.springframework.beans.factory.ListableBeanFactory, org.springframework.beans.factory.support.BeanDefinitionRegistry, org.springframework.context.annotation.AnnotationConfigRegistry, org.springframework.context.ApplicationContext, org.springframework.context.ApplicationEventPublisher, org.springframework.context.ConfigurableApplicationContext, org.springframework.context.Lifecycle, org.springframework.context.MessageSource, org.springframework.core.AliasRegistry, org.springframework.core.env.EnvironmentCapable, org.springframework.core.io.ResourceLoader, org.springframework.core.io.support.ResourcePatternResolver, org.springframework.ui.context.ThemeSource, org.springframework.web.context.ConfigurableWebApplicationContext, org.springframework.web.context.WebApplicationContext


    public class AnnotationConfigServletWebApplicationContext
    extends org.springframework.web.context.support.GenericWebApplicationContext
    implements org.springframework.context.annotation.AnnotationConfigRegistry
    GenericWebApplicationContextthat 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
    See Also:
    register(Class...), scan(String...)
    • Nested Class Summary

      • Nested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoader

        org.springframework.core.io.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.web.context.ConfigurableWebApplicationContext

        APPLICATION_CONTEXT_ID_PREFIX, SERVLET_CONFIG_BEAN_NAME
      • 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
      • Fields inherited from interface org.springframework.context.ConfigurableApplicationContext

        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.beans.factory.BeanFactory

        FACTORY_BEAN_PREFIX
      • Fields inherited from interface org.springframework.core.io.support.ResourcePatternResolver

        CLASSPATH_ALL_URL_PREFIX
      • Fields inherited from interface org.springframework.core.io.ResourceLoader

        CLASSPATH_URL_PREFIX
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      protected void postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) 
      protected void prepareRefresh() 
      void register(java.lang.Class<?>... annotatedClasses)
      Register one or more annotated classes to be processed.
      <T> void registerBean(java.lang.String beanName, java.lang.Class<T> beanClass, java.util.function.Supplier<T> supplier, org.springframework.beans.factory.config.BeanDefinitionCustomizer... customizers) 
      void scan(java.lang.String... basePackages)
      Perform a scan within the specified base packages.
      void setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator beanNameGenerator)
      Provide a custom BeanNameGenerator for use with AnnotatedBeanDefinitionReader and/or ClassPathBeanDefinitionScanner, if any.
      void setEnvironment(org.springframework.core.env.ConfigurableEnvironment environment)
      void setScopeMetadataResolver(org.springframework.context.annotation.ScopeMetadataResolver scopeMetadataResolver)
      Set the ScopeMetadataResolver 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, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setClassLoader, setParent, setResourceLoader
      • Methods inherited from class org.springframework.context.support.AbstractApplicationContext

        addApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, doClose, 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, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, 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.context.ConfigurableApplicationContext

        addApplicationListener, addBeanFactoryPostProcessor, addProtocolResolver, close, getBeanFactory, getEnvironment, isActive, refresh, registerShutdownHook, setId, setParent
      • Methods inherited from interface org.springframework.context.ApplicationContext

        getAutowireCapableBeanFactory, getDisplayName, getId, getParent, getStartupDate
      • Methods inherited from interface org.springframework.beans.factory.ListableBeanFactory

        containsBeanDefinition, findAnnotationOnBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation
      • Methods inherited from interface org.springframework.beans.factory.HierarchicalBeanFactory

        containsLocalBean, getParentBeanFactory
      • 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.MessageSource

        getMessage, getMessage, getMessage
      • Methods inherited from interface org.springframework.context.ApplicationEventPublisher

        publishEvent, publishEvent
      • Methods inherited from interface org.springframework.core.io.support.ResourcePatternResolver

        getResources
      • Methods inherited from interface org.springframework.core.io.ResourceLoader

        getClassLoader, getResource
      • Methods inherited from interface org.springframework.context.Lifecycle

        isRunning, start, stop
      • Methods inherited from interface org.springframework.beans.factory.support.BeanDefinitionRegistry

        containsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNames
      • Methods inherited from interface org.springframework.core.AliasRegistry

        getAliases
    • Constructor Detail

      • AnnotationConfigServletWebApplicationContext

        public AnnotationConfigServletWebApplicationContext(org.springframework.beans.factory.support.DefaultListableBeanFactory beanFactory)
        Create a new AnnotationConfigServletWebApplicationContext with the given DefaultListableBeanFactory. The context needs to be populated through register(java.lang.Class<?>...) calls and then manually refreshed.
        Parameters:
        beanFactory - the DefaultListableBeanFactory instance to use for this context
      • AnnotationConfigServletWebApplicationContext

        public AnnotationConfigServletWebApplicationContext(java.lang.Class<?>... annotatedClasses)
        Create a new AnnotationConfigServletWebApplicationContext, 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

        public AnnotationConfigServletWebApplicationContext(java.lang.String... basePackages)
        Create a new AnnotationConfigServletWebApplicationContext, scanning for bean definitions in the given packages and automatically refreshing the context.
        Parameters:
        basePackages - the packages to check for annotated classes
    • Method Detail

      • setEnvironment

        public void setEnvironment(org.springframework.core.env.ConfigurableEnvironment environment)

        Delegates given environment to underlying AnnotatedBeanDefinitionReader and ClassPathBeanDefinitionScanner members.

        Specified by:
        setEnvironment in interface org.springframework.context.ConfigurableApplicationContext
        Overrides:
        setEnvironment in class org.springframework.context.support.AbstractApplicationContext
      • setBeanNameGenerator

        public void setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator beanNameGenerator)
        Provide a custom 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...).

        Parameters:
        beanNameGenerator - the bean name generator
        See Also:
        AnnotatedBeanDefinitionReader.setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator), ClassPathBeanDefinitionScanner.setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator)
      • setScopeMetadataResolver

        public void setScopeMetadataResolver(org.springframework.context.annotation.ScopeMetadataResolver scopeMetadataResolver)
        Set the 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...).

        Parameters:
        scopeMetadataResolver - the scope metadata resolver
      • register

        public final void register(java.lang.Class<?>... annotatedClasses)
        Register one or more annotated classes to be processed. Note that AbstractApplicationContext.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 interface org.springframework.context.annotation.AnnotationConfigRegistry
        Parameters:
        annotatedClasses - one or more annotated classes, e.g. @Configuration classes
        See Also:
        scan(String...), AbstractApplicationContext.refresh()
      • scan

        public final void scan(java.lang.String... basePackages)
        Perform a scan within the specified base packages. Note that AbstractApplicationContext.refresh() must be called in order for the context to fully process the new class.
        Specified by:
        scan in interface org.springframework.context.annotation.AnnotationConfigRegistry
        Parameters:
        basePackages - the packages to check for annotated classes
        See Also:
        register(Class...), AbstractApplicationContext.refresh()
      • prepareRefresh

        protected void prepareRefresh()
        Overrides:
        prepareRefresh in class org.springframework.context.support.AbstractApplicationContext
      • postProcessBeanFactory

        protected void postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
        Overrides:
        postProcessBeanFactory in class org.springframework.web.context.support.GenericWebApplicationContext
      • registerBean

        public <T> void registerBean(java.lang.String beanName,
                                     java.lang.Class<T> beanClass,
                                     java.util.function.Supplier<T> supplier,
                                     org.springframework.beans.factory.config.BeanDefinitionCustomizer... customizers)
        Overrides:
        registerBean in class org.springframework.context.support.GenericApplicationContext