public class ConfigurationClassPostProcessor extends Object implements BeanDefinitionRegistryPostProcessor, PriorityOrdered, ResourceLoaderAware, ApplicationStartupAware, BeanClassLoaderAware, EnvironmentAware
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.
| Modifier and Type | Field and Description | 
|---|---|
| static AnnotationBeanNameGenerator | IMPORT_BEAN_NAME_GENERATORA  BeanNameGeneratorusing fully qualified class names as default bean names. | 
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE| Constructor and Description | 
|---|
| ConfigurationClassPostProcessor() | 
| Modifier and Type | Method and Description | 
|---|---|
| void | enhanceConfigurationClasses(ConfigurableListableBeanFactory beanFactory)Post-processes a BeanFactory in search of Configuration class BeanDefinitions;
 any candidates are then enhanced by a  ConfigurationClassEnhancer. | 
| int | getOrder()Get the order value of this object. | 
| void | postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)Derive further bean definitions from the configuration classes in the registry. | 
| void | postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)Prepare the Configuration classes for servicing bean requests at runtime
 by replacing them with CGLIB-enhanced subclasses. | 
| void | processConfigBeanDefinitions(BeanDefinitionRegistry registry)Build and validate a configuration model based on the registry of
  Configurationclasses. | 
| void | setApplicationStartup(ApplicationStartup applicationStartup)Set the ApplicationStartup that this object runs with. | 
| void | setBeanClassLoader(ClassLoader beanClassLoader)Callback that supplies the bean  class loaderto
 a bean instance. | 
| void | setBeanNameGenerator(BeanNameGenerator beanNameGenerator)Set the  BeanNameGeneratorto be used when triggering component scanning
 fromConfigurationclasses and when registeringImport'ed
 configuration classes. | 
| void | setEnvironment(Environment environment)Set the  Environmentthat this component runs in. | 
| void | setMetadataReaderFactory(MetadataReaderFactory metadataReaderFactory)Set the  MetadataReaderFactoryto use. | 
| void | setProblemReporter(ProblemReporter problemReporter)Set the  ProblemReporterto use. | 
| void | setResourceLoader(ResourceLoader resourceLoader)Set the ResourceLoader that this object runs in. | 
| void | setSourceExtractor(SourceExtractor sourceExtractor)Set the  SourceExtractorto use for generated bean definitions
 that correspond toBeanfactory methods. | 
public static final AnnotationBeanNameGenerator IMPORT_BEAN_NAME_GENERATOR
BeanNameGenerator using fully qualified class names as default bean names.
 This default for configuration-level import purposes may be overridden through
 setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator). Note that the default for component scanning purposes
 is a plain AnnotationBeanNameGenerator.INSTANCE, unless overridden through
 setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator) with a unified user-level bean name generator.
setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator)public int getOrder()
OrderedHigher values are interpreted as lower priority. As a consequence,
 the object with the lowest value has the highest priority (somewhat
 analogous to Servlet load-on-startup values).
 
Same order values will result in arbitrary sort positions for the affected objects.
getOrder in interface OrderedOrdered.HIGHEST_PRECEDENCE, 
Ordered.LOWEST_PRECEDENCEpublic void setSourceExtractor(@Nullable SourceExtractor sourceExtractor)
SourceExtractor to use for generated bean definitions
 that correspond to Bean factory methods.public void setProblemReporter(@Nullable ProblemReporter problemReporter)
ProblemReporter to use.
 Used to register any problems detected with Configuration or Bean
 declarations. For instance, an @Bean method marked as final is illegal
 and would be reported as a problem. Defaults to FailFastProblemReporter.
public void setMetadataReaderFactory(MetadataReaderFactory metadataReaderFactory)
MetadataReaderFactory to use.
 Default is a CachingMetadataReaderFactory for the specified
 bean class loader.
public void setBeanNameGenerator(BeanNameGenerator beanNameGenerator)
BeanNameGenerator to be used when triggering component scanning
 from Configuration classes and when registering Import'ed
 configuration classes. The default is a standard AnnotationBeanNameGenerator
 for scanned components (compatible with the default in ClassPathBeanDefinitionScanner)
 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 Bean methods.
 
This setter is typically only appropriate when configuring the post-processor as a
 standalone bean definition in XML, e.g. 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.
public void setEnvironment(Environment environment)
EnvironmentAwareEnvironment that this component runs in.setEnvironment in interface EnvironmentAwarepublic void setResourceLoader(ResourceLoader resourceLoader)
ResourceLoaderAwareThis might be a ResourcePatternResolver, which can be checked
 through instanceof ResourcePatternResolver. See also the
 ResourcePatternUtils.getResourcePatternResolver method.
 
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.
setResourceLoader in interface ResourceLoaderAwareresourceLoader - the ResourceLoader object to be used by this objectResourcePatternResolver, 
ResourcePatternUtils.getResourcePatternResolver(org.springframework.core.io.ResourceLoader)public void setBeanClassLoader(ClassLoader beanClassLoader)
BeanClassLoaderAwareclass loader to
 a bean instance.
 Invoked after the population of normal bean properties but
 before an initialization callback such as
 InitializingBean's
 InitializingBean.afterPropertiesSet()
 method or a custom init-method.
setBeanClassLoader in interface BeanClassLoaderAwarebeanClassLoader - the owning class loaderpublic void setApplicationStartup(ApplicationStartup applicationStartup)
ApplicationStartupAwareInvoked 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.
setApplicationStartup in interface ApplicationStartupAwareapplicationStartup - application startup to be used by this objectpublic void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
postProcessBeanDefinitionRegistry in interface BeanDefinitionRegistryPostProcessorregistry - the bean definition registry used by the application contextpublic void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
postProcessBeanFactory in interface BeanFactoryPostProcessorbeanFactory - the bean factory used by the application contextpublic void processConfigBeanDefinitions(BeanDefinitionRegistry registry)
Configuration classes.public void enhanceConfigurationClasses(ConfigurableListableBeanFactory beanFactory)
ConfigurationClassEnhancer.
 Candidate status is determined by BeanDefinition attribute metadata.ConfigurationClassEnhancer