Class AutoConfigurationImportSelector
- java.lang.Object
- org.springframework.boot.autoconfigure.AutoConfigurationImportSelector
- All Implemented Interfaces:
org.springframework.beans.factory.Aware,org.springframework.beans.factory.BeanClassLoaderAware,org.springframework.beans.factory.BeanFactoryAware,org.springframework.context.annotation.DeferredImportSelector,org.springframework.context.annotation.ImportSelector,org.springframework.context.EnvironmentAware,org.springframework.context.ResourceLoaderAware,org.springframework.core.Ordered
public class AutoConfigurationImportSelector extends Object implements org.springframework.context.annotation.DeferredImportSelector, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.context.ResourceLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.context.EnvironmentAware, org.springframework.core.Ordered
DeferredImportSelectorto handleauto-configuration. This class can also be subclassed if a custom variant of@EnableAutoConfigurationis needed.- Since:
- 1.3.0
- See Also:
EnableAutoConfiguration
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static classAutoConfigurationImportSelector.AutoConfigurationEntry
Constructor Summary
Constructors Constructor Description AutoConfigurationImportSelector()
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected List<String>asList(org.springframework.core.annotation.AnnotationAttributes attributes, String name)protected Class<?>getAnnotationClass()Return the source annotation class used by the selector.protected org.springframework.core.annotation.AnnotationAttributesgetAttributes(org.springframework.core.type.AnnotationMetadata metadata)Return the appropriateAnnotationAttributesfrom theAnnotationMetadata.protected AutoConfigurationImportSelector.AutoConfigurationEntrygetAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata, org.springframework.core.type.AnnotationMetadata annotationMetadata)Return theAutoConfigurationImportSelector.AutoConfigurationEntrybased on theAnnotationMetadataof the importing@Configurationclass.protected List<AutoConfigurationImportFilter>getAutoConfigurationImportFilters()protected List<AutoConfigurationImportListener>getAutoConfigurationImportListeners()protected ClassLoadergetBeanClassLoader()protected org.springframework.beans.factory.config.ConfigurableListableBeanFactorygetBeanFactory()protected List<String>getCandidateConfigurations(org.springframework.core.type.AnnotationMetadata metadata, org.springframework.core.annotation.AnnotationAttributes attributes)Return the auto-configuration class names that should be considered.protected org.springframework.core.env.EnvironmentgetEnvironment()protected Set<String>getExclusions(org.springframework.core.type.AnnotationMetadata metadata, org.springframework.core.annotation.AnnotationAttributes attributes)Return any exclusions that limit the candidate configurations.Class<? extends org.springframework.context.annotation.DeferredImportSelector.Group>getImportGroup()intgetOrder()protected org.springframework.core.io.ResourceLoadergetResourceLoader()protected Class<?>getSpringFactoriesLoaderFactoryClass()Return the class used bySpringFactoriesLoaderto load configuration candidates.protected voidhandleInvalidExcludes(List<String> invalidExcludes)Handle any invalid excludes that have been specified.protected booleanisEnabled(org.springframework.core.type.AnnotationMetadata metadata)protected <T> List<T>removeDuplicates(List<T> list)String[]selectImports(org.springframework.core.type.AnnotationMetadata annotationMetadata)voidsetBeanClassLoader(ClassLoader classLoader)voidsetBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory)voidsetEnvironment(org.springframework.core.env.Environment environment)voidsetResourceLoader(org.springframework.core.io.ResourceLoader resourceLoader)
Constructor Detail
AutoConfigurationImportSelector
public AutoConfigurationImportSelector()
Method Detail
selectImports
public String[] selectImports(org.springframework.core.type.AnnotationMetadata annotationMetadata)
- Specified by:
selectImportsin interfaceorg.springframework.context.annotation.ImportSelector
getAutoConfigurationEntry
protected AutoConfigurationImportSelector.AutoConfigurationEntry getAutoConfigurationEntry(AutoConfigurationMetadata autoConfigurationMetadata, org.springframework.core.type.AnnotationMetadata annotationMetadata)
Return theAutoConfigurationImportSelector.AutoConfigurationEntrybased on theAnnotationMetadataof the importing@Configurationclass.- Parameters:
autoConfigurationMetadata- the auto-configuration metadataannotationMetadata- the annotation metadata of the configuration class- Returns:
- the auto-configurations that should be imported
getImportGroup
public Class<? extends org.springframework.context.annotation.DeferredImportSelector.Group> getImportGroup()
- Specified by:
getImportGroupin interfaceorg.springframework.context.annotation.DeferredImportSelector
isEnabled
protected boolean isEnabled(org.springframework.core.type.AnnotationMetadata metadata)
getAttributes
protected org.springframework.core.annotation.AnnotationAttributes getAttributes(org.springframework.core.type.AnnotationMetadata metadata)
Return the appropriateAnnotationAttributesfrom theAnnotationMetadata. By default this method will return attributes forgetAnnotationClass().- Parameters:
metadata- the annotation metadata- Returns:
- annotation attributes
getAnnotationClass
protected Class<?> getAnnotationClass()
Return the source annotation class used by the selector.- Returns:
- the annotation class
getCandidateConfigurations
protected List<String> getCandidateConfigurations(org.springframework.core.type.AnnotationMetadata metadata, org.springframework.core.annotation.AnnotationAttributes attributes)
Return the auto-configuration class names that should be considered. By default this method will load candidates usingSpringFactoriesLoaderwithgetSpringFactoriesLoaderFactoryClass().- Parameters:
metadata- the source metadataattributes- theannotation attributes- Returns:
- a list of candidate configurations
getSpringFactoriesLoaderFactoryClass
protected Class<?> getSpringFactoriesLoaderFactoryClass()
Return the class used bySpringFactoriesLoaderto load configuration candidates.- Returns:
- the factory class
handleInvalidExcludes
protected void handleInvalidExcludes(List<String> invalidExcludes)
Handle any invalid excludes that have been specified.- Parameters:
invalidExcludes- the list of invalid excludes (will always have at least one element)
getExclusions
protected Set<String> getExclusions(org.springframework.core.type.AnnotationMetadata metadata, org.springframework.core.annotation.AnnotationAttributes attributes)
Return any exclusions that limit the candidate configurations.- Parameters:
metadata- the source metadataattributes- theannotation attributes- Returns:
- exclusions or an empty set
getAutoConfigurationImportFilters
protected List<AutoConfigurationImportFilter> getAutoConfigurationImportFilters()
removeDuplicates
protected final <T> List<T> removeDuplicates(List<T> list)
asList
protected final List<String> asList(org.springframework.core.annotation.AnnotationAttributes attributes, String name)
getAutoConfigurationImportListeners
protected List<AutoConfigurationImportListener> getAutoConfigurationImportListeners()
setBeanFactory
public void setBeanFactory(org.springframework.beans.factory.BeanFactory beanFactory) throws org.springframework.beans.BeansException
- Specified by:
setBeanFactoryin interfaceorg.springframework.beans.factory.BeanFactoryAware- Throws:
org.springframework.beans.BeansException
getBeanFactory
protected final org.springframework.beans.factory.config.ConfigurableListableBeanFactory getBeanFactory()
setBeanClassLoader
public void setBeanClassLoader(ClassLoader classLoader)
- Specified by:
setBeanClassLoaderin interfaceorg.springframework.beans.factory.BeanClassLoaderAware
getBeanClassLoader
protected ClassLoader getBeanClassLoader()
setEnvironment
public void setEnvironment(org.springframework.core.env.Environment environment)
- Specified by:
setEnvironmentin interfaceorg.springframework.context.EnvironmentAware
getEnvironment
protected final org.springframework.core.env.Environment getEnvironment()
setResourceLoader
public void setResourceLoader(org.springframework.core.io.ResourceLoader resourceLoader)
- Specified by:
setResourceLoaderin interfaceorg.springframework.context.ResourceLoaderAware
getResourceLoader
protected final org.springframework.core.io.ResourceLoader getResourceLoader()
getOrder
public int getOrder()
- Specified by:
getOrderin interfaceorg.springframework.core.Ordered