@Retention(value=RUNTIME) @Target(value=TYPE) @Documented @Repeatable(value=ComponentScans.class) public @interface ComponentScan
Configuration classes.
 Provides support parallel with Spring XML's <context:component-scan> element.
 Either basePackageClasses() or basePackages() (or its alias
 value()) may be specified to define specific packages to scan. If specific
 packages are not defined, scanning will occur from the package of the
 class that declares this annotation.
 
Note that the <context:component-scan> element has an
 annotation-config attribute; however, this annotation does not. This is because
 in almost all cases when using @ComponentScan, default annotation config
 processing (e.g. processing @Autowired and friends) is assumed. Furthermore,
 when using AnnotationConfigApplicationContext, annotation config processors are
 always registered, meaning that any attempt to disable them at the
 @ComponentScan level would be ignored.
 
See @Configuration's Javadoc for usage examples.
Configuration| Modifier and Type | Optional Element and Description | 
|---|---|
| Class<?>[] | basePackageClassesType-safe alternative to  basePackages()for specifying the packages
 to scan for annotated components. | 
| String[] | basePackagesBase packages to scan for annotated components. | 
| ComponentScan.Filter[] | excludeFiltersSpecifies which types are not eligible for component scanning. | 
| ComponentScan.Filter[] | includeFiltersSpecifies which types are eligible for component scanning. | 
| boolean | lazyInitSpecify whether scanned beans should be registered for lazy initialization. | 
| Class<? extends BeanNameGenerator> | nameGeneratorThe  BeanNameGeneratorclass to be used for naming detected components
 within the Spring container. | 
| String | resourcePatternControls the class files eligible for component detection. | 
| ScopedProxyMode | scopedProxyIndicates whether proxies should be generated for detected components, which may be
 necessary when using scopes in a proxy-style fashion. | 
| Class<? extends ScopeMetadataResolver> | scopeResolverThe  ScopeMetadataResolverto be used for resolving the scope of detected components. | 
| boolean | useDefaultFiltersIndicates whether automatic detection of classes annotated with  @Component@Repository,@Service, or@Controllershould be enabled. | 
| String[] | valueAlias for  basePackages(). | 
@AliasFor(value="basePackages") public abstract String[] value
basePackages().
 Allows for more concise annotation declarations if no other attributes
 are needed — for example, @ComponentScan("org.my.pkg")
 instead of @ComponentScan(basePackages = "org.my.pkg").
@AliasFor(value="value") public abstract String[] basePackages
value() is an alias for (and mutually exclusive with) this
 attribute.
 
Use basePackageClasses() for a type-safe alternative to
 String-based package names.
public abstract Class<?>[] basePackageClasses
basePackages() for specifying the packages
 to scan for annotated components. The package of each class specified will be scanned.
 Consider creating a special no-op marker class or interface in each package that serves no purpose other than being referenced by this attribute.
public abstract Class<? extends BeanNameGenerator> nameGenerator
BeanNameGenerator class to be used for naming detected components
 within the Spring container.
 The default value of the BeanNameGenerator interface itself indicates
 that the scanner used to process this @ComponentScan annotation should
 use its inherited bean name generator, e.g. the default
 AnnotationBeanNameGenerator or any custom instance supplied to the
 application context at bootstrap time.
AnnotationConfigApplicationContext.setBeanNameGenerator(BeanNameGenerator), 
AnnotationBeanNameGenerator, 
FullyQualifiedAnnotationBeanNameGeneratorpublic abstract Class<? extends ScopeMetadataResolver> scopeResolver
ScopeMetadataResolver to be used for resolving the scope of detected components.public abstract ScopedProxyMode scopedProxy
The default is defer to the default behavior of the component scanner used to execute the actual scan.
Note that setting this attribute overrides any value set for scopeResolver().
public abstract String resourcePattern
Consider use of includeFilters() and excludeFilters()
 for a more flexible approach.
public abstract boolean useDefaultFilters
@Component
 @Repository, @Service, or @Controller should be enabled.public abstract ComponentScan.Filter[] includeFilters
Further narrows the set of candidate components from everything in basePackages()
 to everything in the base packages that matches the given filter or filters.
 
Note that these filters will be applied in addition to the default filters, if specified.
 Any type under the specified base packages which matches a given filter will be included,
 even if it does not match the default filters (i.e. is not annotated with @Component).
resourcePattern(), 
useDefaultFilters()public abstract ComponentScan.Filter[] excludeFilters
resourcePattern()