Class AnnotationConfigApplicationContext
- All Implemented Interfaces:
- Closeable,- AutoCloseable,- BeanFactory,- HierarchicalBeanFactory,- ListableBeanFactory,- BeanDefinitionRegistry,- AnnotationConfigRegistry,- ApplicationContext,- ApplicationEventPublisher,- ConfigurableApplicationContext,- Lifecycle,- MessageSource,- AliasRegistry,- EnvironmentCapable,- ResourceLoader,- ResourcePatternResolver
@Configuration-annotated classes, but also plain
 @Component types and JSR-330 compliant
 classes using jakarta.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.
- Since:
- 3.0
- Author:
- Juergen Hoeller, Chris Beams
- See Also:
- 
Nested Class SummaryNested classes/interfaces inherited from class org.springframework.core.io.DefaultResourceLoaderDefaultResourceLoader.ClassPathContextResource
- 
Field SummaryFields inherited from class org.springframework.context.support.AbstractApplicationContextAPPLICATION_EVENT_MULTICASTER_BEAN_NAME, LIFECYCLE_PROCESSOR_BEAN_NAME, logger, MESSAGE_SOURCE_BEAN_NAMEFields inherited from interface org.springframework.beans.factory.BeanFactoryFACTORY_BEAN_PREFIXFields inherited from interface org.springframework.context.ConfigurableApplicationContextAPPLICATION_STARTUP_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.core.io.ResourceLoaderCLASSPATH_URL_PREFIXFields inherited from interface org.springframework.core.io.support.ResourcePatternResolverCLASSPATH_ALL_URL_PREFIX
- 
Constructor SummaryConstructorsConstructorDescriptionCreate a new AnnotationConfigApplicationContext that needs to be populated throughregister(java.lang.Class<?>...)calls and then manually refreshed.AnnotationConfigApplicationContext(Class<?>... componentClasses) Create a new AnnotationConfigApplicationContext, deriving bean definitions from the given component classes and automatically refreshing the context.AnnotationConfigApplicationContext(String... basePackages) Create a new AnnotationConfigApplicationContext, scanning for components in the given packages, registering bean definitions for those components, and automatically refreshing the context.Create a new AnnotationConfigApplicationContext with the given DefaultListableBeanFactory.
- 
Method SummaryModifier and TypeMethodDescriptionvoidRegister one or more component classes to be processed.<T> voidregisterBean(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).voidPerform a scan within the specified base packages.voidsetBeanNameGenerator(BeanNameGenerator beanNameGenerator) Provide a customBeanNameGeneratorfor use withAnnotatedBeanDefinitionReaderand/orClassPathBeanDefinitionScanner, if any.voidsetEnvironment(ConfigurableEnvironment environment) Propagate the given customEnvironmentto the underlyingAnnotatedBeanDefinitionReaderandClassPathBeanDefinitionScanner.voidsetScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver) Set theScopeMetadataResolverto use for registered component classes.Methods inherited from class org.springframework.context.support.GenericApplicationContextcancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, refreshForAotProcessing, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setApplicationStartup, setClassLoader, setParent, setResourceLoaderMethods inherited from class org.springframework.context.support.AbstractApplicationContextaddApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, createEnvironment, destroyBeans, doClose, findAnnotationOnBean, findAnnotationOnBean, finishBeanFactoryInitialization, finishRefresh, getAliases, getApplicationListeners, getApplicationName, 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, getResourcePatternResolver, getStartupDate, getType, 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, removeApplicationListener, resetCommonCaches, setDisplayName, setId, start, stop, toStringMethods inherited from class org.springframework.core.io.DefaultResourceLoaderaddProtocolResolver, clearResourceCaches, getProtocolResolvers, getResourceByPath, getResourceCacheMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.springframework.core.AliasRegistrygetAliasesMethods inherited from interface org.springframework.beans.factory.support.BeanDefinitionRegistrycontainsBeanDefinition, getBeanDefinitionCount, getBeanDefinitionNamesMethods inherited from interface org.springframework.context.ConfigurableApplicationContextaddProtocolResolver
- 
Constructor Details- 
AnnotationConfigApplicationContextpublic AnnotationConfigApplicationContext()Create a new AnnotationConfigApplicationContext that needs to be populated throughregister(java.lang.Class<?>...)calls and then manually refreshed.
- 
AnnotationConfigApplicationContextCreate a new AnnotationConfigApplicationContext with the given DefaultListableBeanFactory.- Parameters:
- beanFactory- the DefaultListableBeanFactory instance to use for this context
 
- 
AnnotationConfigApplicationContextCreate a new AnnotationConfigApplicationContext, deriving bean definitions from the given component classes and automatically refreshing the context.- Parameters:
- componentClasses- one or more component classes — for example,- @Configurationclasses
 
- 
AnnotationConfigApplicationContextCreate a new AnnotationConfigApplicationContext, scanning for components in the given packages, registering bean definitions for those components, and automatically refreshing the context.- Parameters:
- basePackages- the packages to scan for component classes
 
 
- 
- 
Method Details- 
setEnvironmentPropagate the given customEnvironmentto the underlyingAnnotatedBeanDefinitionReaderandClassPathBeanDefinitionScanner.- Specified by:
- setEnvironmentin interface- ConfigurableApplicationContext
- Overrides:
- setEnvironmentin class- AbstractApplicationContext
- Parameters:
- environment- the new environment
- See Also:
 
- 
setBeanNameGeneratorProvide 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...).- See Also:
 
- 
setScopeMetadataResolverSet theScopeMetadataResolverto use for registered component classes.The default is an AnnotationScopeMetadataResolver.Any call to this method must occur prior to calls to register(Class...)and/orscan(String...).
- 
registerRegister one or more component classes to be processed.Note that AbstractApplicationContext.refresh()must be called in order for the context to fully process the new classes.- Specified by:
- registerin interface- AnnotationConfigRegistry
- Parameters:
- componentClasses- one or more component classes — for example,- @Configurationclasses
- See Also:
 
- 
scanPerform a scan within the specified base packages.Note that AbstractApplicationContext.refresh()must be called in order for the context to fully process the new classes.- Specified by:
- scanin interface- AnnotationConfigRegistry
- Parameters:
- basePackages- the packages to scan for component classes
- See Also:
 
- 
registerBeanpublic <T> void registerBean(@Nullable String beanName, Class<T> beanClass, @Nullable Supplier<T> supplier, BeanDefinitionCustomizer... customizers) Description copied from class:GenericApplicationContextRegister 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).This method can be overridden to adapt the registration mechanism for all registerBeanmethods (since they all delegate to this one).- Overrides:
- registerBeanin class- GenericApplicationContext
- Parameters:
- beanName- the name of the bean (may be- null)
- beanClass- the class of the bean
- supplier- 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
 
 
-