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"> * @Configuration * @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; }