public class ConfigurationClassPostProcessor extends Object implements org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor, org.springframework.core.PriorityOrdered, ResourceLoaderAware, ApplicationStartupAware, org.springframework.beans.factory.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_GENERATOR
A
BeanNameGenerator using fully qualified class names as default bean names. |
Constructor and Description |
---|
ConfigurationClassPostProcessor() |
Modifier and Type | Method and Description |
---|---|
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 a
ConfigurationClassEnhancer . |
int |
getOrder() |
void |
postProcessBeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
Derive further bean definitions from the configuration classes in the registry.
|
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.
|
void |
processConfigBeanDefinitions(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
Build and validate a configuration model based on the registry of
Configuration classes. |
void |
setApplicationStartup(org.springframework.core.metrics.ApplicationStartup applicationStartup)
Set the ApplicationStartup that this object runs with.
|
void |
setBeanClassLoader(ClassLoader beanClassLoader) |
void |
setBeanNameGenerator(org.springframework.beans.factory.support.BeanNameGenerator beanNameGenerator)
Set the
BeanNameGenerator to be used when triggering component scanning
from Configuration classes and when registering Import 'ed
configuration classes. |
void |
setEnvironment(org.springframework.core.env.Environment environment)
Set the
Environment that this component runs in. |
void |
setMetadataReaderFactory(org.springframework.core.type.classreading.MetadataReaderFactory metadataReaderFactory)
Set the
MetadataReaderFactory to use. |
void |
setProblemReporter(org.springframework.beans.factory.parsing.ProblemReporter problemReporter)
Set the
ProblemReporter to use. |
void |
setResourceLoader(org.springframework.core.io.ResourceLoader resourceLoader)
Set the ResourceLoader that this object runs in.
|
void |
setSourceExtractor(org.springframework.beans.factory.parsing.SourceExtractor sourceExtractor)
Set the
SourceExtractor to use for generated bean definitions
that correspond to Bean factory 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()
getOrder
in interface org.springframework.core.Ordered
public void setSourceExtractor(@Nullable org.springframework.beans.factory.parsing.SourceExtractor sourceExtractor)
SourceExtractor
to use for generated bean definitions
that correspond to Bean
factory methods.public void setProblemReporter(@Nullable org.springframework.beans.factory.parsing.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(org.springframework.core.type.classreading.MetadataReaderFactory metadataReaderFactory)
MetadataReaderFactory
to use.
Default is a CachingMetadataReaderFactory
for the specified
bean class loader.
public void setBeanNameGenerator(org.springframework.beans.factory.support.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(org.springframework.core.env.Environment environment)
EnvironmentAware
Environment
that this component runs in.setEnvironment
in interface EnvironmentAware
public void setResourceLoader(org.springframework.core.io.ResourceLoader resourceLoader)
ResourceLoaderAware
This 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 ResourceLoaderAware
resourceLoader
- the ResourceLoader object to be used by this objectResourcePatternResolver
,
ResourcePatternUtils.getResourcePatternResolver(org.springframework.core.io.ResourceLoader)
public void setBeanClassLoader(ClassLoader beanClassLoader)
setBeanClassLoader
in interface org.springframework.beans.factory.BeanClassLoaderAware
public void setApplicationStartup(org.springframework.core.metrics.ApplicationStartup applicationStartup)
ApplicationStartupAware
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.
setApplicationStartup
in interface ApplicationStartupAware
applicationStartup
- application startup to be used by this objectpublic void postProcessBeanDefinitionRegistry(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
postProcessBeanDefinitionRegistry
in interface org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor
public void postProcessBeanFactory(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
postProcessBeanFactory
in interface org.springframework.beans.factory.config.BeanFactoryPostProcessor
public void processConfigBeanDefinitions(org.springframework.beans.factory.support.BeanDefinitionRegistry registry)
Configuration
classes.public void enhanceConfigurationClasses(org.springframework.beans.factory.config.ConfigurableListableBeanFactory beanFactory)
ConfigurationClassEnhancer
.
Candidate status is determined by BeanDefinition attribute metadata.ConfigurationClassEnhancer