Package org.springframework.context.annotation

# Interface ImportSelector

All Known Subinterfaces:
  `DeferredImportSelector`

All Known Implementing Classes:
  `AdviceModeImportSelector`, `AsyncConfigurationSelector`, `CachingConfigurationSelector`

public interface ImportSelector
Interface to be implemented by types that determine which @`Configuration` class(es) should be imported based on a given selection criteria, usually one or more annotation attributes.

An `ImportSelector` may implement any of the following `Aware` interfaces, and their respective methods will be called prior to `selectImports(org.springframework.core.type.AnnotationMetadata)`:

- `EnvironmentAware`
- `BeanFactoryAware`
- `BeanClassLoaderAware`
- `ResourceLoaderAware`

Alternatively, the class may provide a single constructor with one or more of the following supported parameter types:

- `Environment`
- `BeanFactory`
- `ClassLoader`
- `ResourceLoader`

`ImportSelector` implementations are usually processed in the same way as regular `@Import` annotations, however, it is also possible to defer selection of imports until all `@Configuration` classes have been processed (see `DeferredImportSelector` for details).

Since:
  3.1
Author:
  Chris Beams, Juergen Hoeller
See Also:
  - `DeferredImportSelector`
  - `Import`
  - `ImportBeanDefinitionRegistrar`
  - `Configuration`

## Method Summary

Modifier and Type
Method
Description
`default Predicate<String>`
`getExclusionFilter()`
Return a predicate for excluding classes from the import candidates, to be transitively applied to all classes found through this selector's imports.
`String[]`
`selectImports(org.springframework.core.type.AnnotationMetadata importingClassMetadata)`
Select and return the names of which class(es) should be imported based on the `AnnotationMetadata` of the importing @`Configuration` class.

## Method Details

### selectImports

String[] selectImports(org.springframework.core.type.AnnotationMetadata importingClassMetadata)
Select and return the names of which class(es) should be imported based on the `AnnotationMetadata` of the importing @`Configuration` class.

Returns:
  the class names, or an empty array if none

### getExclusionFilter

@Nullable default Predicate<String> getExclusionFilter()
Return a predicate for excluding classes from the import candidates, to be transitively applied to all classes found through this selector's imports.

If this predicate returns `true` for a given fully-qualified class name, said class will not be considered as an imported configuration class, bypassing class file loading as well as metadata introspection.

Returns:
  the filter predicate for fully-qualified candidate class names of transitively imported configuration classes, or `null` if none
Since:
  5.2.4