Class AnnotatedPropertySourceLoader<A extends java.lang.annotation.Annotation>

  • Type Parameters:
    A - The type of annotation that triggers property source loading
    All Implemented Interfaces:
    org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.context.annotation.ImportSelector, org.springframework.context.EnvironmentAware, org.springframework.context.ResourceLoaderAware
    Direct Known Subclasses:
    PropertySourceExtensionLoader

    public abstract class AnnotatedPropertySourceLoader<A extends java.lang.annotation.Annotation>
    extends BeanCapableImportCandidate
    implements org.springframework.context.annotation.ImportSelector
    Abstract base class for ImportSelector implementations that load a PropertySource when a Configuration class is annotated with a specific annotation.

    This class provides a foundation for conditionally adding property sources to the Spring environment based on annotations present on configuration classes. Subclasses must implement the loadPropertySource(AnnotationAttributes, AnnotationMetadata, String, MutablePropertySources) method to define how the property source is loaded.

    Example Usage

    {@code
     public class MyPropertySourceLoader extends AnnotatedPropertySourceLoader {
    Since:
    1.0.0
    Author:
    Mercy
    See Also:
    ResourcePropertySourceLoader, PropertySourceExtensionLoader, ImportSelector
    • Field Detail

      • NAME_ATTRIBUTE_NAME

        protected static final java.lang.String NAME_ATTRIBUTE_NAME
        See Also:
        Constant Field Values
      • logger

        protected final io.microsphere.logging.Logger logger
    • Constructor Detail

      • AnnotatedPropertySourceLoader

        public AnnotatedPropertySourceLoader()
    • Method Detail

      • resolveAnnotationType

        protected java.lang.Class<A> resolveAnnotationType()
      • selectImports

        public final java.lang.String[] selectImports​(org.springframework.core.type.AnnotationMetadata metadata)
        Specified by:
        selectImports in interface org.springframework.context.annotation.ImportSelector
      • resolvePropertySourceName

        @Nonnull
        protected final java.lang.String resolvePropertySourceName​(org.springframework.core.annotation.AnnotationAttributes attributes,
                                                                   org.springframework.core.type.AnnotationMetadata metadata)
        Resolve the name of PropertySource
        Parameters:
        attributes - AnnotationAttributes
        metadata - AnnotationMetadata
        Returns:
        non-null
      • buildPropertySourceName

        @Nullable
        protected java.lang.String buildPropertySourceName​(org.springframework.core.annotation.AnnotationAttributes attributes,
                                                           org.springframework.core.type.AnnotationMetadata metadata)
        Build the name of PropertySource
        Parameters:
        attributes - AnnotationAttributes
        metadata - AnnotationMetadata
        Returns:
        the attribute value of annotation if the "name" attribute present, or null
      • buildDefaultPropertySourceName

        @Nonnull
        protected java.lang.String buildDefaultPropertySourceName​(org.springframework.core.annotation.AnnotationAttributes attributes,
                                                                  org.springframework.core.type.AnnotationMetadata metadata)
        Build the default name of PropertySource
        Parameters:
        attributes - AnnotationAttributes
        metadata - AnnotationMetadata
        Returns:
        non-null
      • loadPropertySource

        @Nullable
        protected abstract void loadPropertySource​(org.springframework.core.annotation.AnnotationAttributes attributes,
                                                   org.springframework.core.type.AnnotationMetadata metadata,
                                                   java.lang.String propertySourceName,
                                                   org.springframework.core.env.MutablePropertySources propertySources)
                                            throws java.lang.Throwable
        Load the PropertySource
        Parameters:
        attributes - AnnotationAttributes
        metadata - AnnotationMetadata
        propertySourceName - the name of PropertySource
        propertySources - MutablePropertySources to be added
        Throws:
        java.lang.Throwable - the failure of the loading
      • getAnnotationType

        @Nonnull
        public final java.lang.Class<A> getAnnotationType()
        The annotation type
        Returns:
        non-null
      • getPropertySourceName

        protected java.lang.String getPropertySourceName()