public class ClassPathScanningCandidateComponentProvider extends Object implements EnvironmentCapable, ResourceLoaderAware
Candidate components are identified by applying exclude and include filters.
 AnnotationTypeFilter and AssignableTypeFilter include filters
 for an annotation/target-type that is annotated with Indexed are
 supported: if any other include filter is specified, the index is ignored and
 classpath scanning is used instead.
 
This implementation is based on Spring's
 MetadataReader
 facility, backed by an ASM ClassReader.
MetadataReaderFactory, 
AnnotationMetadata, 
ScannedGenericBeanDefinition, 
CandidateComponentsIndex| Modifier | Constructor and Description | 
|---|---|
| protected  | ClassPathScanningCandidateComponentProvider()Protected constructor for flexible subclass initialization. | 
|   | ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters)Create a ClassPathScanningCandidateComponentProvider with a  StandardEnvironment. | 
|   | ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters,
                                           Environment environment)Create a ClassPathScanningCandidateComponentProvider with the given  Environment. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | addExcludeFilter(TypeFilter excludeFilter)Add an exclude type filter to the front of the exclusion list. | 
| void | addIncludeFilter(TypeFilter includeFilter)Add an include type filter to the end of the inclusion list. | 
| void | clearCache()Clear the local metadata cache, if any, removing all cached class metadata. | 
| Set<BeanDefinition> | findCandidateComponents(String basePackage)Scan the component index or class path for candidate components. | 
| Environment | getEnvironment()Return the  Environmentassociated with this component. | 
| MetadataReaderFactory | getMetadataReaderFactory()Return the MetadataReaderFactory used by this component provider. | 
| protected BeanDefinitionRegistry | getRegistry()Return the  BeanDefinitionRegistryused by this scanner, if any. | 
| ResourceLoader | getResourceLoader()Return the ResourceLoader that this component provider uses. | 
| protected boolean | isCandidateComponent(AnnotatedBeanDefinition beanDefinition)Determine whether the given bean definition qualifies as candidate. | 
| protected boolean | isCandidateComponent(MetadataReader metadataReader)Determine whether the given class does not match any exclude filter
 and does match at least one include filter. | 
| protected void | registerDefaultFilters()Register the default filter for  @Component. | 
| void | resetFilters(boolean useDefaultFilters)Reset the configured type filters. | 
| protected String | resolveBasePackage(String basePackage)Resolve the specified base package into a pattern specification for
 the package search path. | 
| void | setEnvironment(Environment environment)Set the Environment to use when resolving placeholders and evaluating
  @Conditional-annotated component classes. | 
| void | setMetadataReaderFactory(MetadataReaderFactory metadataReaderFactory)Set the  MetadataReaderFactoryto use. | 
| void | setResourceLoader(ResourceLoader resourceLoader)Set the  ResourceLoaderto use for resource locations. | 
| void | setResourcePattern(String resourcePattern)Set the resource pattern to use when scanning the classpath. | 
protected final Log logger
protected ClassPathScanningCandidateComponentProvider()
public ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters)
StandardEnvironment.useDefaultFilters - whether to register the default filters for the
 @Component, @Repository,
 @Service, and @Controller
 stereotype annotationsregisterDefaultFilters()public ClassPathScanningCandidateComponentProvider(boolean useDefaultFilters,
                                                   Environment environment)
Environment.useDefaultFilters - whether to register the default filters for the
 @Component, @Repository,
 @Service, and @Controller
 stereotype annotationsenvironment - the Environment to useregisterDefaultFilters()public void setResourcePattern(String resourcePattern)
public void addIncludeFilter(TypeFilter includeFilter)
public void addExcludeFilter(TypeFilter excludeFilter)
public void resetFilters(boolean useDefaultFilters)
useDefaultFilters - whether to re-register the default filters for
 the @Component, @Repository,
 @Service, and @Controller
 stereotype annotationsregisterDefaultFilters()protected void registerDefaultFilters()
@Component.
 This will implicitly register all annotations that have the
 @Component meta-annotation including the
 @Repository, @Service, and
 @Controller stereotype annotations.
 
Also supports Java EE 6's ManagedBean and
 JSR-330's Named annotations, if available.
public void setEnvironment(Environment environment)
@Conditional-annotated component classes.
 The default is a StandardEnvironment.
environment - the Environment to usepublic final Environment getEnvironment()
EnvironmentCapableEnvironment associated with this component.getEnvironment in interface EnvironmentCapable@Nullable protected BeanDefinitionRegistry getRegistry()
BeanDefinitionRegistry used by this scanner, if any.public void setResourceLoader(@Nullable ResourceLoader resourceLoader)
ResourceLoader to use for resource locations.
 This will typically be a ResourcePatternResolver implementation.
 Default is a PathMatchingResourcePatternResolver, also capable of
 resource pattern resolving through the ResourcePatternResolver interface.
setResourceLoader in interface ResourceLoaderAwareresourceLoader - the ResourceLoader object to be used by this objectResourcePatternResolver, 
PathMatchingResourcePatternResolverpublic final ResourceLoader getResourceLoader()
public void setMetadataReaderFactory(MetadataReaderFactory metadataReaderFactory)
MetadataReaderFactory to use.
 Default is a CachingMetadataReaderFactory for the specified
 resource loader.
 
Call this setter method after setResourceLoader(org.springframework.core.io.ResourceLoader) in order
 for the given MetadataReaderFactory to override the default factory.
public final MetadataReaderFactory getMetadataReaderFactory()
public Set<BeanDefinition> findCandidateComponents(String basePackage)
basePackage - the package to check for annotated classesprotected String resolveBasePackage(String basePackage)
The default implementation resolves placeholders against system properties, and converts a "."-based package path to a "/"-based resource path.
basePackage - the base package as specified by the userprotected boolean isCandidateComponent(MetadataReader metadataReader) throws IOException
metadataReader - the ASM ClassReader for the classIOExceptionprotected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition)
The default implementation checks whether the class is not an interface and not dependent on an enclosing class.
Can be overridden in subclasses.
beanDefinition - the bean definition to checkpublic void clearCache()