Class ConfigurationClassPostProcessor
- All Implemented Interfaces:
org.springframework.beans.factory.aot.BeanFactoryInitializationAotProcessor, org.springframework.beans.factory.aot.BeanRegistrationAotProcessor, org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.config.BeanFactoryPostProcessor, org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor, ApplicationStartupAware, EnvironmentAware, ResourceLoaderAware, org.springframework.core.Ordered, org.springframework.core.PriorityOrdered
BeanFactoryPostProcessor used for bootstrapping processing of
@Configuration classes.
Registered by default when using <context:annotation-config/> or
<context:component-scan/>. Otherwise, may be declared manually as
with any other BeanFactoryPostProcessor.
This post processor is priority-ordered as it is important that any
@Bean methods declared in @Configuration classes have
their corresponding bean definitions registered before any other
BeanFactoryPostProcessor executes.
- Since:
- 3.0
- Author:
- Chris Beams, Juergen Hoeller, Phillip Webb, Sam Brannen
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final AnnotationBeanNameGeneratorABeanNameGeneratorusing fully qualified class names as default bean names.Fields inherited from interface org.springframework.beans.factory.aot.BeanRegistrationAotProcessor
IGNORE_REGISTRATION_ATTRIBUTEFields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidenhanceConfigurationClasses(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) Post-processes a BeanFactory in search of Configuration class BeanDefinitions; any candidates are then enhanced by aConfigurationClassEnhancer.intgetOrder()voidpostProcessBeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry registry) Derive further bean definitions from the configuration classes in the registry.voidpostProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) Prepare the Configuration classes for servicing bean requests at runtime by replacing them with CGLIB-enhanced subclasses.@Nullable org.springframework.beans.factory.aot.BeanFactoryInitializationAotContributionprocessAheadOfTime(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) @Nullable org.springframework.beans.factory.aot.BeanRegistrationAotContributionprocessAheadOfTime(org.springframework.beans.factory.support.RegisteredBean registeredBean) voidprocessConfigBeanDefinitions(org.springframework.beans.factory.support.BeanDefinitionRegistry registry) Build and validate a configuration model based on the registry ofConfigurationclasses.voidsetApplicationStartup(org.springframework.core.metrics.ApplicationStartup applicationStartup) Set the ApplicationStartup that this object runs with.voidsetBeanClassLoader(ClassLoader beanClassLoader) voidsetBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator beanNameGenerator) Set theBeanNameGeneratorto be used when triggering component scanning fromConfigurationclasses and when registeringImport'ed configuration classes.voidsetEnvironment(org.springframework.core.env.Environment environment) Set theEnvironmentthat this component runs in.voidsetMetadataReaderFactory(org.springframework.core.type.classreading.MetadataReaderFactory metadataReaderFactory) Set theMetadataReaderFactoryto use.voidsetProblemReporter(@Nullable org.springframework.beans.factory.parsing.ProblemReporter problemReporter) Set theProblemReporterto use.voidsetResourceLoader(org.springframework.core.io.ResourceLoader resourceLoader) Set the ResourceLoader that this object runs in.voidsetSourceExtractor(@Nullable org.springframework.beans.factory.parsing.SourceExtractor sourceExtractor) Set theSourceExtractorto use for generated bean definitions that correspond toBeanfactory methods.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.springframework.beans.factory.aot.BeanRegistrationAotProcessor
isBeanExcludedFromAotProcessing
-
Field Details
-
IMPORT_BEAN_NAME_GENERATOR
ABeanNameGeneratorusing fully qualified class names as default bean names.This default for configuration-level import purposes may be overridden through
setBeanNameGenerator(BeanNameGenerator). Note that the default for component scanning purposes is a plainAnnotationBeanNameGenerator.INSTANCE, unless overridden throughsetBeanNameGenerator(BeanNameGenerator)with a unified user-level bean name generator.- Since:
- 5.2
- See Also:
-
-
Constructor Details
-
ConfigurationClassPostProcessor
public ConfigurationClassPostProcessor()
-
-
Method Details
-
getOrder
public int getOrder()- Specified by:
getOrderin interfaceorg.springframework.core.Ordered
-
setSourceExtractor
-
setProblemReporter
public void setProblemReporter(@Nullable org.springframework.beans.factory.parsing.ProblemReporter problemReporter) Set theProblemReporterto use.Used to register any problems detected with
ConfigurationorBeandeclarations. For instance, an @Bean method marked asfinalis illegal and would be reported as a problem. Defaults toFailFastProblemReporter. -
setMetadataReaderFactory
public void setMetadataReaderFactory(org.springframework.core.type.classreading.MetadataReaderFactory metadataReaderFactory) Set theMetadataReaderFactoryto use.Default is a
CachingMetadataReaderFactoryfor the specified bean class loader. -
setBeanNameGenerator
public void setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator beanNameGenerator) Set theBeanNameGeneratorto be used when triggering component scanning fromConfigurationclasses and when registeringImport'ed configuration classes. The default is a standardAnnotationBeanNameGeneratorfor scanned components (compatible with the default inClassPathBeanDefinitionScanner) and a variant thereof for imported configuration classes (using unique fully-qualified class names instead of standard component overriding).Note that this strategy does not apply to
Beanmethods.This setter is typically only appropriate when configuring the post-processor as a standalone bean definition in XML, for example, not using the dedicated
AnnotationConfig*application contexts or the<context:annotation-config>element. Any bean name generator specified against the application context will take precedence over any set here.- Since:
- 3.1.1
- See Also:
-
setEnvironment
public void setEnvironment(org.springframework.core.env.Environment environment) Description copied from interface:EnvironmentAwareSet theEnvironmentthat this component runs in.- Specified by:
setEnvironmentin interfaceEnvironmentAware
-
setResourceLoader
public void setResourceLoader(org.springframework.core.io.ResourceLoader resourceLoader) Description copied from interface:ResourceLoaderAwareSet the ResourceLoader that this object runs in.This might be a ResourcePatternResolver, which can be checked through
instanceof ResourcePatternResolver. See also theResourcePatternUtils.getResourcePatternResolvermethod.Invoked after population of normal bean properties but before an init callback like InitializingBean's
afterPropertiesSetor a custom init-method. Invoked before ApplicationContextAware'ssetApplicationContext.- Specified by:
setResourceLoaderin interfaceResourceLoaderAware- Parameters:
resourceLoader- the ResourceLoader object to be used by this object- See Also:
-
setBeanClassLoader
- Specified by:
setBeanClassLoaderin interfaceorg.springframework.beans.factory.BeanClassLoaderAware
-
setApplicationStartup
public void setApplicationStartup(org.springframework.core.metrics.ApplicationStartup applicationStartup) Description copied from interface:ApplicationStartupAwareSet the ApplicationStartup that this object runs with.Invoked after population of normal bean properties but before an init callback like InitializingBean's afterPropertiesSet or a custom init-method. Invoked before ApplicationContextAware's setApplicationContext.
- Specified by:
setApplicationStartupin interfaceApplicationStartupAware- Parameters:
applicationStartup- application startup to be used by this object
-
postProcessBeanDefinitionRegistry
public void postProcessBeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry registry) Derive further bean definitions from the configuration classes in the registry.- Specified by:
postProcessBeanDefinitionRegistryin interfaceorg.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor
-
postProcessBeanFactory
public void postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) Prepare the Configuration classes for servicing bean requests at runtime by replacing them with CGLIB-enhanced subclasses.- Specified by:
postProcessBeanFactoryin interfaceorg.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor- Specified by:
postProcessBeanFactoryin interfaceorg.springframework.beans.factory.config.BeanFactoryPostProcessor
-
processAheadOfTime
public @Nullable org.springframework.beans.factory.aot.BeanRegistrationAotContribution processAheadOfTime(org.springframework.beans.factory.support.RegisteredBean registeredBean) - Specified by:
processAheadOfTimein interfaceorg.springframework.beans.factory.aot.BeanRegistrationAotProcessor
-
processAheadOfTime
public @Nullable org.springframework.beans.factory.aot.BeanFactoryInitializationAotContribution processAheadOfTime(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) - Specified by:
processAheadOfTimein interfaceorg.springframework.beans.factory.aot.BeanFactoryInitializationAotProcessor
-
processConfigBeanDefinitions
public void processConfigBeanDefinitions(org.springframework.beans.factory.support.BeanDefinitionRegistry registry) Build and validate a configuration model based on the registry ofConfigurationclasses. -
enhanceConfigurationClasses
public void enhanceConfigurationClasses(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory) Post-processes a BeanFactory in search of Configuration class BeanDefinitions; any candidates are then enhanced by aConfigurationClassEnhancer. Candidate status is determined by BeanDefinition attribute metadata.- See Also:
-