org.springframework.boot.context.embedded
Class AnnotationConfigEmbeddedWebApplicationContext

java.lang.Object
  extended by org.springframework.core.io.DefaultResourceLoader
      extended by org.springframework.context.support.AbstractApplicationContext
          extended by org.springframework.context.support.GenericApplicationContext
              extended by org.springframework.web.context.support.GenericWebApplicationContext
                  extended by org.springframework.boot.context.embedded.EmbeddedWebApplicationContext
                      extended by org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext
All Implemented Interfaces:
Closeable, org.springframework.beans.factory.BeanFactory, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.HierarchicalBeanFactory, org.springframework.beans.factory.ListableBeanFactory, org.springframework.beans.factory.support.BeanDefinitionRegistry, 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 AnnotationConfigEmbeddedWebApplicationContext
extends EmbeddedWebApplicationContext

EmbeddedWebApplicationContext 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.

Author:
Phillip Webb
See Also:
register(Class...), scan(String...), EmbeddedWebApplicationContext, AnnotationConfigWebApplicationContext

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.boot.context.embedded.EmbeddedWebApplicationContext
DISPATCHER_SERVLET_NAME
 
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_GLOBAL_SESSION, 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, 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
 
Constructor Summary
AnnotationConfigEmbeddedWebApplicationContext()
          Create a new AnnotationConfigEmbeddedWebApplicationContext that needs to be populated through register(java.lang.Class...) calls and then manually refreshed.
AnnotationConfigEmbeddedWebApplicationContext(Class<?>... annotatedClasses)
          Create a new AnnotationConfigEmbeddedWebApplicationContext, deriving bean definitions from the given annotated classes and automatically refreshing the context.
AnnotationConfigEmbeddedWebApplicationContext(String... basePackages)
          Create a new AnnotationConfigEmbeddedWebApplicationContext, scanning for bean definitions in the given packages and automatically refreshing the context.
 
Method Summary
protected  void postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
          Register ServletContextAwareProcessor.
protected  void prepareRefresh()
           
 void refresh()
           
 void register(Class<?>... annotatedClasses)
          Register one or more annotated classes to be processed.
 void scan(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.boot.context.embedded.EmbeddedWebApplicationContext
doClose, finishRefresh, getEmbeddedServletContainer, getEmbeddedServletContainerFactory, getNamespace, getResourceByPath, getServletConfig, getServletContextInitializerBeans, onRefresh, prepareEmbeddedWebApplicationContext, setNamespace, setServletConfig
 
Methods inherited from class org.springframework.web.context.support.GenericWebApplicationContext
createEnvironment, getApplicationName, getConfigLocations, getResourcePatternResolver, getServletContext, getTheme, initPropertySources, setConfigLocation, setConfigLocations, setServletContext
 
Methods inherited from class org.springframework.context.support.GenericApplicationContext
cancelRefresh, closeBeanFactory, getBeanDefinition, getBeanFactory, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, registerAlias, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setId, setParent, setResourceLoader
 
Methods inherited from class org.springframework.context.support.AbstractApplicationContext
addApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, destroy, destroyBeans, findAnnotationOnBean, finishBeanFactoryInitialization, getAliases, getApplicationListeners, getAutowireCapableBeanFactory, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, obtainFreshBeanFactory, onClose, prepareBeanFactory, publishEvent, registerBeanPostProcessors, registerListeners, registerShutdownHook, setDisplayName, start, stop, toString
 
Methods inherited from class org.springframework.core.io.DefaultResourceLoader
getClassLoader, setClassLoader
 
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, close, getBeanFactory, getEnvironment, isActive, 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, 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, getType, isPrototype, isSingleton, isTypeMatch
 
Methods inherited from interface org.springframework.context.MessageSource
getMessage, getMessage, getMessage
 
Methods inherited from interface org.springframework.context.ApplicationEventPublisher
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

AnnotationConfigEmbeddedWebApplicationContext

public AnnotationConfigEmbeddedWebApplicationContext()
Create a new AnnotationConfigEmbeddedWebApplicationContext that needs to be populated through register(java.lang.Class...) calls and then manually refreshed.


AnnotationConfigEmbeddedWebApplicationContext

public AnnotationConfigEmbeddedWebApplicationContext(Class<?>... annotatedClasses)
Create a new AnnotationConfigEmbeddedWebApplicationContext, deriving bean definitions from the given annotated classes and automatically refreshing the context.

Parameters:
annotatedClasses - one or more annotated classes, e.g. @Configuration classes

AnnotationConfigEmbeddedWebApplicationContext

public AnnotationConfigEmbeddedWebApplicationContext(String... basePackages)
Create a new AnnotationConfigEmbeddedWebApplicationContext, 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...).

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...).


register

public final void register(Class<?>... annotatedClasses)
Register one or more annotated classes to be processed. Note that refresh() must be called in order for the context to fully process the new class.

Calls to register(java.lang.Class...) are idempotent; adding the same annotated class more than once has no additional effect.

Parameters:
annotatedClasses - one or more annotated classes, e.g. @Configuration classes
See Also:
scan(String...), refresh()

scan

public final void scan(String... basePackages)
Perform a scan within the specified base packages. Note that refresh() must be called in order for the context to fully process the new class.

Parameters:
basePackages - the packages to check for annotated classes
See Also:
register(Class...), 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)
Description copied from class: EmbeddedWebApplicationContext
Register ServletContextAwareProcessor.

Overrides:
postProcessBeanFactory in class EmbeddedWebApplicationContext
See Also:
ServletContextAwareProcessor

refresh

public final void refresh()
                   throws org.springframework.beans.BeansException,
                          IllegalStateException
Specified by:
refresh in interface org.springframework.context.ConfigurableApplicationContext
Overrides:
refresh in class org.springframework.context.support.AbstractApplicationContext
Throws:
org.springframework.beans.BeansException
IllegalStateException


Copyright © 2013. All Rights Reserved.