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 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.
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(SourceExtractor sourceExtractor)
Set theSourceExtractorto use for generated bean definitions that correspond toBeanfactory methods.
setProblemReporter
public void setProblemReporter(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 value 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; may benullin which case a defaultClassLoadermust be used, for example theClassLoaderobtained viaClassUtils.getDefaultClassLoader()
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