public class ClassPathScanningCandidateComponentProvider extends Object implements EnvironmentCapable, ResourceLoaderAware
This implementation is based on Spring's
MetadataReader
facility, backed by an ASM ClassReader
.
MetadataReaderFactory
,
AnnotationMetadata
,
ScannedGenericBeanDefinition
Constructor and Description |
---|
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 underlying metadata cache, removing all cached class metadata.
|
Set<BeanDefinition> |
findCandidateComponents(String basePackage)
Scan the class path for candidate components.
|
Environment |
getEnvironment()
Return the
Environment associated with this component. |
MetadataReaderFactory |
getMetadataReaderFactory()
Return the MetadataReaderFactory used by this component provider.
|
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
@Profile -annotated component classes. |
void |
setMetadataReaderFactory(MetadataReaderFactory metadataReaderFactory)
Set the
MetadataReaderFactory to use. |
void |
setResourceLoader(ResourceLoader resourceLoader)
Set the ResourceLoader to use for resource locations.
|
void |
setResourcePattern(String resourcePattern)
Set the resource pattern to use when scanning the classpath.
|
protected final Log logger
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 setResourceLoader(ResourceLoader resourceLoader)
Default is PathMatchingResourcePatternResolver, also capable of resource pattern resolving through the ResourcePatternResolver interface.
setResourceLoader
in interface ResourceLoaderAware
resourceLoader
- ResourceLoader object to be used by this objectResourcePatternResolver
,
PathMatchingResourcePatternResolver
public 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 void setEnvironment(Environment environment)
@Profile
-annotated component classes.
The default is a StandardEnvironment
environment
- the Environment to usepublic final Environment getEnvironment()
EnvironmentCapable
Environment
associated with this component.getEnvironment
in interface EnvironmentCapable
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 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 classIOException
protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition)
The default implementation checks whether the class is concrete (i.e. not abstract and not an interface). Can be overridden in subclasses.
beanDefinition
- the bean definition to checkpublic void clearCache()