## org.springframework.context.annotation
Class AdviceModeImportSelector<A extends Annotation>

    java.lang.Object
      org.springframework.context.annotation.AdviceModeImportSelector<A>

Type Parameters:
  `A` - Annotation containing AdviceMode attribute

All Implemented Interfaces:
  ImportSelector

Direct Known Subclasses:
  AsyncConfigurationSelector, CachingConfigurationSelector, TransactionManagementConfigurationSelector

    public abstract class AdviceModeImportSelector<A extends Annotation>

extends Object
implements ImportSelector

Convenient base class for `ImportSelector` implementations that select imports based on an `AdviceMode` value from an annotation (such as the `@Enable*` annotations).

Since:
  3.1
Author:
  Chris Beams

Field Summary
`static String` `DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME`

Constructor Summary
`AdviceModeImportSelector()`

Method Summary
`protected String` `getAdviceModeAttributeName()` The name of the `AdviceMode` attribute for the annotation specified by the generic type `A`.
`protected abstract String[]` `selectImports(AdviceMode adviceMode)` Determine which classes should be imported based on the given `AdviceMode`.
`String[]` `selectImports(AnnotationMetadata importingClassMetadata)` Select and return the names of which class(es) should be imported based on the `AnnotationMetadata` of the importing @`Configuration` class.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME

    public static final String DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME

See Also:
  Constant Field Values

Constructor Detail

### AdviceModeImportSelector

    public AdviceModeImportSelector()

Method Detail

### getAdviceModeAttributeName

    protected String getAdviceModeAttributeName()

  The name of the `AdviceMode` attribute for the annotation specified by the generic type `A`. The default is "mode", but subclasses may override in order to customize.

### selectImports

    public final String[] selectImports(AnnotationMetadata importingClassMetadata)

  Select and return the names of which class(es) should be imported based on the `AnnotationMetadata` of the importing @`Configuration` class.

  This implementation resolves the type of annotation from generic metadata and validates that (a) the annotation is in fact present on the importing `@Configuration` class and (b) that the given annotation has an advice mode attribute of type `AdviceMode`.

  The `selectImports(AdviceMode)` method is then invoked, allowing the concrete implementation to choose imports in a safe and convenient fashion.

  Specified by:
    `selectImports` in interface `ImportSelector`
  Throws:
    `IllegalArgumentException` - if expected annotation `A` is not present on the importing `@Configuration` class or if `selectImports(AdviceMode)` returns `null`

### selectImports

    protected abstract String[] selectImports(AdviceMode adviceMode)

  Determine which classes should be imported based on the given `AdviceMode`.

  Returning `null` from this method indicates that the `AdviceMode` could not be handled or was unknown and that an `IllegalArgumentException` should be thrown.

  Parameters:
    `adviceMode` - the value of the advice mode attribute for the annotation specified via generics.
  Returns:
    array containing classes to import; empty array if none, `null` if the given `AdviceMode` is unknown.