diff --git a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/actuator/ConfigurationPropertyHasFeaturesAutoConfiguration.java b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/actuator/ConfigurationPropertyHasFeaturesAutoConfiguration.java index d28cb5af..53f446e1 100644 --- a/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/actuator/ConfigurationPropertyHasFeaturesAutoConfiguration.java +++ b/microsphere-spring-cloud-commons/src/main/java/io/microsphere/spring/cloud/client/actuator/ConfigurationPropertyHasFeaturesAutoConfiguration.java @@ -18,44 +18,47 @@ package io.microsphere.spring.cloud.client.actuator; import io.microsphere.logging.Logger; +import io.microsphere.spring.cloud.client.actuator.constants.FeaturesConstants; import io.microsphere.spring.cloud.client.condition.ConditionalOnFeaturesAvailable; import io.microsphere.spring.context.config.AutoRegistrationBean; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.config.SingletonBeanRegistry; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.support.DefaultListableBeanFactory; import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.client.actuator.HasFeatures; import org.springframework.cloud.client.actuator.NamedFeature; -import org.springframework.context.EnvironmentAware; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.Environment; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; -import static io.microsphere.collection.ListUtils.newLinkedList; +import static io.microsphere.collection.ListUtils.ofList; import static io.microsphere.collection.MapUtils.newLinkedHashMap; -import static io.microsphere.constants.PropertyConstants.MICROSPHERE_PROPERTY_NAME_PREFIX; -import static io.microsphere.constants.SymbolConstants.COMMA_CHAR; -import static io.microsphere.constants.SymbolConstants.DOT; -import static io.microsphere.constants.SymbolConstants.DOT_CHAR; +import static io.microsphere.collection.SetUtils.newLinkedHashSet; +import static io.microsphere.collection.SetUtils.newTreeSet; import static io.microsphere.logging.LoggerFactory.getLogger; -import static io.microsphere.spring.cloud.commons.constants.CommonsPropertyConstants.MICROSPHERE_SPRING_CLOUD_PROPERTY_NAME_PREFIX; -import static io.microsphere.spring.core.env.EnvironmentUtils.asConfigurableEnvironment; -import static io.microsphere.spring.core.env.PropertySourcesUtils.getSubProperties; +import static io.microsphere.spring.beans.BeanSource.BEAN_FACTORY; +import static io.microsphere.spring.beans.factory.BeanFactoryUtils.asDefaultListableBeanFactory; +import static io.microsphere.spring.cloud.client.actuator.FeaturesUtils.getAbstractFeaturePropertyName; +import static io.microsphere.spring.cloud.client.actuator.FeaturesUtils.getHasFeaturesBeanName; +import static io.microsphere.spring.cloud.client.actuator.FeaturesUtils.getNamedFeaturePropertyName; +import static io.microsphere.spring.cloud.client.actuator.FeaturesUtils.getQualifierFeatureName; +import static io.microsphere.spring.cloud.client.actuator.NamedFeatureComparator.INSTANCE; import static io.microsphere.text.FormatUtils.format; import static io.microsphere.util.ClassLoaderUtils.resolveClass; -import static io.microsphere.util.StringUtils.split; -import static java.lang.String.valueOf; +import static io.microsphere.util.ClassUtils.getSimpleName; /** * Auto-registrar for Spring Cloud Client Actuator's {@link HasFeatures} based on configuration properties. *

- * This class scans configuration properties under the prefix {@value #PROPERTY_PREFIX} to automatically register - * {@link HasFeatures} beans. It supports two types of feature definitions: + * This class scans configuration properties under the prefix {@value FeaturesConstants#PROPERTY_NAME_PREFIX} to + * automatically register {@link HasFeatures} beans. It supports two types of feature definitions: *