public class AnnotationConfigApplicationContext extends GenericApplicationContext implements AnnotationConfigRegistry
@Configuration-annotated classes, but also plain
 @Component types and JSR-330 compliant
 classes using javax.inject annotations. Allows for registering classes one by
 one using register(Class...) as well as for classpath scanning using
 scan(String...).
 In case of multiple @Configuration classes, @Bean methods defined in
 later classes will override those defined in earlier classes. This can be leveraged to
 deliberately override certain bean definitions via an extra @Configuration
 class.
 
See @Configuration's javadoc for usage examples.
register(java.lang.Class<?>...), 
scan(java.lang.String...), 
AnnotatedBeanDefinitionReader, 
ClassPathBeanDefinitionScanner, 
GenericXmlApplicationContextDefaultResourceLoader.ClassPathContextResourceAPPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAMECONFIG_LOCATION_DELIMITERS, CONVERSION_SERVICE_BEAN_NAME, ENVIRONMENT_BEAN_NAME, LOAD_TIME_WEAVER_BEAN_NAME, SYSTEM_ENVIRONMENT_BEAN_NAME, SYSTEM_PROPERTIES_BEAN_NAMEFACTORY_BEAN_PREFIXCLASSPATH_ALL_URL_PREFIXCLASSPATH_URL_PREFIX| Constructor and Description | 
|---|
| AnnotationConfigApplicationContext()Create a new AnnotationConfigApplicationContext that needs to be populated
 through  register(java.lang.Class<?>...)calls and then manually refreshed. | 
| AnnotationConfigApplicationContext(Class<?>... annotatedClasses)Create a new AnnotationConfigApplicationContext, deriving bean definitions
 from the given annotated classes and automatically refreshing the context. | 
| AnnotationConfigApplicationContext(DefaultListableBeanFactory beanFactory)Create a new AnnotationConfigApplicationContext with the given DefaultListableBeanFactory. | 
| AnnotationConfigApplicationContext(String... basePackages)Create a new AnnotationConfigApplicationContext, scanning for bean definitions
 in the given packages and automatically refreshing the context. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | register(Class<?>... annotatedClasses)Register one or more annotated classes to be processed. | 
| <T> void | registerBean(Class<T> annotatedClass,
            Object... constructorArguments)Register a bean from the given bean class, deriving its metadata from
 class-declared annotations, and optionally providing explicit constructor
 arguments for consideration in the autowiring process. | 
| <T> void | registerBean(String beanName,
            Class<T> annotatedClass,
            Object... constructorArguments)Register a bean from the given bean class, deriving its metadata from
 class-declared annotations, and optionally providing explicit constructor
 arguments for consideration in the autowiring process. | 
| <T> void | registerBean(String beanName,
            Class<T> beanClass,
            Supplier<T> supplier,
            BeanDefinitionCustomizer... customizers)Register a bean from the given bean class, using the given supplier for
 obtaining a new instance (typically declared as a lambda expression or
 method reference), optionally customizing its bean definition metadata
 (again typically declared as a lambda expression). | 
| void | scan(String... basePackages)Perform a scan within the specified base packages. | 
| void | setBeanNameGenerator(BeanNameGenerator beanNameGenerator)Provide a custom  BeanNameGeneratorfor use withAnnotatedBeanDefinitionReaderand/orClassPathBeanDefinitionScanner, if any. | 
| void | setEnvironment(ConfigurableEnvironment environment)Propagates the given custom  Environmentto the underlyingAnnotatedBeanDefinitionReaderandClassPathBeanDefinitionScanner. | 
| void | setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)Set the  ScopeMetadataResolverto use for detected bean classes. | 
cancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, registerAlias, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setClassLoader, setParent, setResourceLoaderaddApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, createEnvironment, destroy, destroyBeans, doClose, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationName, getBean, getBean, getBean, getBean, getBean, getBeanDefinitionCount, getBeanDefinitionNames, getBeanFactoryPostProcessors, getBeanNamesForAnnotation, getBeanNamesForType, getBeanNamesForType, getBeanNamesForType, getBeansOfType, getBeansOfType, getBeansWithAnnotation, getDisplayName, getEnvironment, getId, getInternalParentBeanFactory, getInternalParentMessageSource, getMessage, getMessage, getMessage, getParent, getParentBeanFactory, getResourcePatternResolver, getStartupDate, getType, initApplicationEventMulticaster, initLifecycleProcessor, initMessageSource, initPropertySources, invokeBeanFactoryPostProcessors, isActive, isPrototype, isRunning, isSingleton, isTypeMatch, isTypeMatch, obtainFreshBeanFactory, onClose, onRefresh, postProcessBeanFactory, prepareBeanFactory, prepareRefresh, publishEvent, publishEvent, publishEvent, refresh, registerBeanPostProcessors, registerListeners, registerShutdownHook, resetCommonCaches, setDisplayName, setId, start, stop, toStringaddProtocolResolver, clearResourceCaches, getProtocolResolvers, getResourceByPath, getResourceCacheclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitcontainsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNamesgetAliasesaddProtocolResolverpublic AnnotationConfigApplicationContext()
register(java.lang.Class<?>...) calls and then manually refreshed.public AnnotationConfigApplicationContext(DefaultListableBeanFactory beanFactory)
beanFactory - the DefaultListableBeanFactory instance to use for this contextpublic AnnotationConfigApplicationContext(Class<?>... annotatedClasses)
annotatedClasses - one or more annotated classes,
 e.g. @Configuration classespublic AnnotationConfigApplicationContext(String... basePackages)
basePackages - the packages to check for annotated classespublic void setEnvironment(ConfigurableEnvironment environment)
Environment to the underlying
 AnnotatedBeanDefinitionReader and ClassPathBeanDefinitionScanner.setEnvironment in interface ConfigurableApplicationContextsetEnvironment in class AbstractApplicationContextenvironment - the new environmentAbstractApplicationContext.createEnvironment()public void setBeanNameGenerator(BeanNameGenerator beanNameGenerator)
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...).
public void setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)
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...).
public void register(Class<?>... annotatedClasses)
Note that AbstractApplicationContext.refresh() must be called in order for the context
 to fully process the new classes.
register in interface AnnotationConfigRegistryannotatedClasses - one or more annotated classes,
 e.g. @Configuration classesscan(String...), 
AbstractApplicationContext.refresh()public void scan(String... basePackages)
Note that AbstractApplicationContext.refresh() must be called in order for the context
 to fully process the new classes.
scan in interface AnnotationConfigRegistrybasePackages - the packages to check for annotated classesregister(Class...), 
AbstractApplicationContext.refresh()public <T> void registerBean(Class<T> annotatedClass, Object... constructorArguments)
The bean name will be generated according to annotated component rules.
annotatedClass - the class of the beanconstructorArguments - argument values to be fed into Spring's
 constructor resolution algorithm, resolving either all arguments or just
 specific ones, with the rest to be resolved through regular autowiring
 (may be null or empty)public <T> void registerBean(@Nullable String beanName, Class<T> annotatedClass, Object... constructorArguments)
beanName - the name of the bean (may be null)annotatedClass - the class of the beanconstructorArguments - argument values to be fed into Spring's
 constructor resolution algorithm, resolving either all arguments or just
 specific ones, with the rest to be resolved through regular autowiring
 (may be null or empty)public <T> void registerBean(@Nullable String beanName, Class<T> beanClass, @Nullable Supplier<T> supplier, BeanDefinitionCustomizer... customizers)
GenericApplicationContextThis method can be overridden to adapt the registration mechanism for
 all registerBean methods (since they all delegate to this one).
registerBean in class GenericApplicationContextbeanName - the name of the bean (may be null)beanClass - the class of the beansupplier - a callback for creating an instance of the bean (in case
 of null, resolving a public constructor to be autowired instead)customizers - one or more callbacks for customizing the factory's
 BeanDefinition, e.g. setting a lazy-init or primary flag