content: package com.ctrip.framework.apollo.spring.annotation;
  
  import java.lang.annotation.Documented;
  import java.lang.annotation.ElementType;
  import java.lang.annotation.Retention;
  import java.lang.annotation.RetentionPolicy;
  import java.lang.annotation.Target;
  
  import org.springframework.context.annotation.Import;
  import org.springframework.core.Ordered;
  
  import com.ctrip.framework.apollo.core.ConfigConsts;
  
  /**
   * Use this annotation to register Apollo property sources when using Java Config.
   *
   * <p>Configuration example:</p>
   * <pre class="code">
   * &#064;Configuration
   * &#064;EnableApolloConfig({"someNamespace","anotherNamespace"})
   * public class AppConfig {
   *
   * }
   * </pre>
   *
   * @author Jason Song(song_s@ctrip.com)
   */
  @Retention(RetentionPolicy.RUNTIME)
  @Target(ElementType.TYPE)
  @Documented
  @Import(ApolloConfigRegistrar.class)
  public @interface EnableApolloConfig {
    /**
     * Apollo namespaces to inject configuration into Spring Property Sources.
     */
    String[] value() default {ConfigConsts.NAMESPACE_APPLICATION};
  
    /**
     * The order of the apollo config, default is {@link Ordered#LOWEST_PRECEDENCE}, which is Integer.MAX_VALUE.
     * If there are properties with the same name in different apollo configs, the apollo config with smaller order wins.
     * @return
     */
    int order() default Ordered.LOWEST_PRECEDENCE;
  }
  