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 Details

    • DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME

      public static final String DEFAULT_ADVICE_MODE_ATTRIBUTE_NAME
      The default advice mode attribute name.
      See Also:
  • Constructor Details

    • AdviceModeImportSelector

      public AdviceModeImportSelector()
  • Method Details

    • 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)
      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
      Returns:
      the class names, or an empty array if none
      Throws:
      IllegalArgumentException - if expected annotation A is not present on the importing @Configuration class or if selectImports(AdviceMode) returns null
    • selectImports

      @Nullable 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)