Class ConfigurationClassPostProcessor
- java.lang.Object
- org.springframework.context.annotation.ConfigurationClassPostProcessor
- All Implemented Interfaces:
Aware,BeanClassLoaderAware,BeanFactoryPostProcessor,BeanDefinitionRegistryPostProcessor,EnvironmentAware,ResourceLoaderAware,Ordered,PriorityOrdered
public class ConfigurationClassPostProcessor extends Object implements BeanDefinitionRegistryPostProcessor, PriorityOrdered, ResourceLoaderAware, BeanClassLoaderAware, EnvironmentAware
BeanFactoryPostProcessorused for bootstrapping processing of@Configurationclasses.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
Beanmethods declared in@Configurationclasses have their corresponding bean definitions registered before any otherBeanFactoryPostProcessorexecutes.- Since:
- 3.0
- Author:
- Chris Beams, Juergen Hoeller, Phillip Webb
Field Summary
Fields Modifier and Type Field Description static AnnotationBeanNameGeneratorIMPORT_BEAN_NAME_GENERATORABeanNameGeneratorusing fully qualified class names as default bean names.Fields inherited from interface org.springframework.core.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
Constructor Summary
Constructors Constructor Description ConfigurationClassPostProcessor()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidenhanceConfigurationClasses(ConfigurableListableBeanFactory beanFactory)Post-processes a BeanFactory in search of Configuration class BeanDefinitions; any candidates are then enhanced by aConfigurationClassEnhancer.intgetOrder()Get the order value of this object.voidpostProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)Derive further bean definitions from the configuration classes in the registry.voidpostProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)Prepare the Configuration classes for servicing bean requests at runtime by replacing them with CGLIB-enhanced subclasses.voidprocessConfigBeanDefinitions(BeanDefinitionRegistry registry)Build and validate a configuration model based on the registry ofConfigurationclasses.voidsetBeanClassLoader(ClassLoader beanClassLoader)Callback that supplies the beanclass loaderto a bean instance.voidsetBeanNameGenerator(BeanNameGenerator beanNameGenerator)Set theBeanNameGeneratorto be used when triggering component scanning fromConfigurationclasses and when registeringImport'ed configuration classes.voidsetEnvironment(Environment environment)Set theEnvironmentthat this component runs in.voidsetMetadataReaderFactory(MetadataReaderFactory metadataReaderFactory)Set theMetadataReaderFactoryto use.voidsetProblemReporter(ProblemReporter problemReporter)Set theProblemReporterto use.voidsetResourceLoader(ResourceLoader resourceLoader)Set the ResourceLoader that this object runs in.voidsetSourceExtractor(SourceExtractor sourceExtractor)Set theSourceExtractorto use for generated bean definitions that correspond toBeanfactory methods.
Field Detail
IMPORT_BEAN_NAME_GENERATOR
public static final AnnotationBeanNameGenerator 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(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.
Constructor Detail
ConfigurationClassPostProcessor
public ConfigurationClassPostProcessor()
Method Detail
getOrder
public int getOrder()
Description copied from interface:OrderedGet 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-startupvalues).Same order values will result in arbitrary sort positions for the affected objects.
- Specified by:
getOrderin interfaceOrdered- Returns:
- the order value
- See Also:
Ordered.HIGHEST_PRECEDENCE,Ordered.LOWEST_PRECEDENCE
setSourceExtractor
public void setSourceExtractor(@Nullable SourceExtractor sourceExtractor)
Set theSourceExtractorto use for generated bean definitions that correspond toBeanfactory methods.
setProblemReporter
public void setProblemReporter(@Nullable 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(MetadataReaderFactory metadataReaderFactory)
Set theMetadataReaderFactoryto use.Default is a
CachingMetadataReaderFactoryfor the specified bean class loader.
setBeanNameGenerator
public void setBeanNameGenerator(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, 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
public void setEnvironment(Environment environment)
Description copied from interface:EnvironmentAwareSet theEnvironmentthat this component runs in.- Specified by:
setEnvironmentin interfaceEnvironmentAware
setResourceLoader
public void setResourceLoader(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:
ResourcePatternResolver,ResourcePatternUtils.getResourcePatternResolver(org.springframework.core.io.ResourceLoader)
setBeanClassLoader
public void setBeanClassLoader(ClassLoader beanClassLoader)
Description copied from interface:BeanClassLoaderAwareCallback that supplies the beanclass loaderto a bean instance.Invoked after the population of normal bean properties but before an initialization callback such as
InitializingBean'sInitializingBean.afterPropertiesSet()method or a custom init-method.- Specified by:
setBeanClassLoaderin interfaceBeanClassLoaderAware- Parameters:
beanClassLoader- the owning class loader
postProcessBeanDefinitionRegistry
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)
Derive further bean definitions from the configuration classes in the registry.- Specified by:
postProcessBeanDefinitionRegistryin interfaceBeanDefinitionRegistryPostProcessor- Parameters:
registry- the bean definition registry used by the application context
postProcessBeanFactory
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory)
Prepare the Configuration classes for servicing bean requests at runtime by replacing them with CGLIB-enhanced subclasses.- Specified by:
postProcessBeanFactoryin interfaceBeanFactoryPostProcessor- Parameters:
beanFactory- the bean factory used by the application context
processConfigBeanDefinitions
public void processConfigBeanDefinitions(BeanDefinitionRegistry registry)
Build and validate a configuration model based on the registry ofConfigurationclasses.
enhanceConfigurationClasses
public void enhanceConfigurationClasses(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:
ConfigurationClassEnhancer