Class ConfigurationClassPostProcessor
- All Implemented Interfaces:
BeanFactoryInitializationAotProcessor
,Aware
,BeanClassLoaderAware
,BeanFactoryPostProcessor
,BeanDefinitionRegistryPostProcessor
,ApplicationStartupAware
,EnvironmentAware
,ResourceLoaderAware
,Ordered
,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
Modifier and TypeFieldDescriptionstatic final AnnotationBeanNameGenerator
ABeanNameGenerator
using fully qualified class names as default bean names.Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
Post-processes a BeanFactory in search of Configuration class BeanDefinitions; any candidates are then enhanced by aConfigurationClassEnhancer
.int
getOrder()
Get the order value of this object.void
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.processAheadOfTime
(ConfigurableListableBeanFactory beanFactory) Process the givenConfigurableListableBeanFactory
instance ahead-of-time and return a contribution ornull
.void
Build and validate a configuration model based on the registry ofConfiguration
classes.void
setApplicationStartup
(ApplicationStartup applicationStartup) Set the ApplicationStartup that this object runs with.void
setBeanClassLoader
(ClassLoader beanClassLoader) Callback that supplies the beanclass loader
to a bean instance.void
setBeanNameGenerator
(BeanNameGenerator beanNameGenerator) Set theBeanNameGenerator
to be used when triggering component scanning fromConfiguration
classes and when registeringImport
'ed configuration classes.void
setEnvironment
(Environment environment) Set theEnvironment
that this component runs in.void
setMetadataReaderFactory
(MetadataReaderFactory metadataReaderFactory) Set theMetadataReaderFactory
to use.void
setProblemReporter
(ProblemReporter problemReporter) Set theProblemReporter
to use.void
setResourceLoader
(ResourceLoader resourceLoader) Set the ResourceLoader that this object runs in.void
setSourceExtractor
(SourceExtractor sourceExtractor) Set theSourceExtractor
to use for generated bean definitions that correspond toBean
factory methods.
-
Field Details
-
IMPORT_BEAN_NAME_GENERATOR
ABeanNameGenerator
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 plainAnnotationBeanNameGenerator.INSTANCE
, unless overridden throughsetBeanNameGenerator(org.springframework.beans.factory.support.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()Description copied from interface:Ordered
Get the order value of this object.Higher 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.
-
setSourceExtractor
Set theSourceExtractor
to use for generated bean definitions that correspond toBean
factory methods. -
setProblemReporter
Set theProblemReporter
to use.Used to register any problems detected with
Configuration
orBean
declarations. For instance, an @Bean method marked asfinal
is illegal and would be reported as a problem. Defaults toFailFastProblemReporter
. -
setMetadataReaderFactory
Set theMetadataReaderFactory
to use.Default is a
CachingMetadataReaderFactory
for the specified bean class loader. -
setBeanNameGenerator
Set theBeanNameGenerator
to be used when triggering component scanning fromConfiguration
classes and when registeringImport
'ed configuration classes. The default is a standardAnnotationBeanNameGenerator
for 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
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. -
setEnvironment
Description copied from interface:EnvironmentAware
Set theEnvironment
that this component runs in.- Specified by:
setEnvironment
in interfaceEnvironmentAware
-
setResourceLoader
Description copied from interface:ResourceLoaderAware
Set the ResourceLoader that this object runs in.This might be a ResourcePatternResolver, which can be checked through
instanceof ResourcePatternResolver
. See also theResourcePatternUtils.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'ssetApplicationContext
.- Specified by:
setResourceLoader
in interfaceResourceLoaderAware
- Parameters:
resourceLoader
- the ResourceLoader object to be used by this object- See Also:
-
setBeanClassLoader
Description copied from interface:BeanClassLoaderAware
Callback that supplies the beanclass 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.- Specified by:
setBeanClassLoader
in interfaceBeanClassLoaderAware
- Parameters:
beanClassLoader
- the owning class loader
-
setApplicationStartup
Description copied from interface:ApplicationStartupAware
Set 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:
setApplicationStartup
in interfaceApplicationStartupAware
- Parameters:
applicationStartup
- application startup to be used by this object
-
postProcessBeanDefinitionRegistry
Derive further bean definitions from the configuration classes in the registry.- Specified by:
postProcessBeanDefinitionRegistry
in interfaceBeanDefinitionRegistryPostProcessor
- Parameters:
registry
- the bean definition registry used by the application context
-
postProcessBeanFactory
Prepare the Configuration classes for servicing bean requests at runtime by replacing them with CGLIB-enhanced subclasses.- Specified by:
postProcessBeanFactory
in interfaceBeanFactoryPostProcessor
- Parameters:
beanFactory
- the bean factory used by the application context
-
processAheadOfTime
public BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) Description copied from interface:BeanFactoryInitializationAotProcessor
Process the givenConfigurableListableBeanFactory
instance ahead-of-time and return a contribution ornull
.Processors are free to use any techniques they like to analyze the given bean factory. Most typically use reflection to find fields or methods to use in the contribution. Contributions typically generate source code or resource files that can be used when the AOT optimized application runs.
If the given bean factory does not contain anything that is relevant to the processor, it should return a
null
contribution.- Specified by:
processAheadOfTime
in interfaceBeanFactoryInitializationAotProcessor
- Parameters:
beanFactory
- the bean factory to process- Returns:
- a
BeanFactoryInitializationAotContribution
ornull
-
processConfigBeanDefinitions
Build and validate a configuration model based on the registry ofConfiguration
classes. -
enhanceConfigurationClasses
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:
-
ConfigurationClassEnhancer
-