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_NAMEAPPLICATION_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_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<?>... componentClasses)
Create a new AnnotationConfigApplicationContext, deriving bean definitions
from the given component 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 components
in the given packages, registering bean definitions for those components,
and automatically refreshing the context.
|
| Modifier and Type | Method and Description |
|---|---|
void |
register(Class<?>... componentClasses)
Register one or more component classes to be processed.
|
<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
BeanNameGenerator for use with AnnotatedBeanDefinitionReader
and/or ClassPathBeanDefinitionScanner, if any. |
void |
setEnvironment(ConfigurableEnvironment environment)
Propagate the given custom
Environment to the underlying
AnnotatedBeanDefinitionReader and ClassPathBeanDefinitionScanner. |
void |
setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)
Set the
ScopeMetadataResolver to use for registered component classes. |
cancelRefresh, closeBeanFactory, getAutowireCapableBeanFactory, getBeanDefinition, getBeanFactory, getClassLoader, getDefaultListableBeanFactory, getResource, getResources, isAlias, isBeanNameInUse, refreshBeanFactory, registerAlias, registerBean, registerBean, registerBean, registerBean, registerBean, registerBeanDefinition, removeAlias, removeBeanDefinition, setAllowBeanDefinitionOverriding, setAllowCircularReferences, setApplicationStartup, setClassLoader, setParent, setResourceLoaderaddApplicationListener, addBeanFactoryPostProcessor, assertBeanFactoryActive, close, containsBean, containsBeanDefinition, containsLocalBean, createEnvironment, destroy, 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, 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<?>... componentClasses)
componentClasses - one or more component classes — for example,
@Configuration classespublic AnnotationConfigApplicationContext(String... basePackages)
basePackages - the packages to scan for component 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...).
AnnotatedBeanDefinitionReader.setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator),
ClassPathBeanDefinitionScanner.setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator),
AnnotationBeanNameGenerator,
FullyQualifiedAnnotationBeanNameGeneratorpublic void setScopeMetadataResolver(ScopeMetadataResolver scopeMetadataResolver)
ScopeMetadataResolver to use for registered component 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<?>... componentClasses)
Note that AbstractApplicationContext.refresh() must be called in order for the context
to fully process the new classes.
register in interface AnnotationConfigRegistrycomponentClasses - one or more component classes — for example,
@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 scan for component classesregister(Class...),
AbstractApplicationContext.refresh()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