diff --git a/pigx-common/pigx-common-gray/src/main/java/com/pig4cloud/pigx/common/gray/GrayLoadBalancerAutoConfiguration.java b/pigx-common/pigx-common-gray/src/main/java/com/pig4cloud/pigx/common/gray/GrayLoadBalancerAutoConfiguration.java index 6a9b9969b..d52b5b2ae 100644 --- a/pigx-common/pigx-common-gray/src/main/java/com/pig4cloud/pigx/common/gray/GrayLoadBalancerAutoConfiguration.java +++ b/pigx-common/pigx-common-gray/src/main/java/com/pig4cloud/pigx/common/gray/GrayLoadBalancerAutoConfiguration.java @@ -18,12 +18,13 @@ package com.pig4cloud.pigx.common.gray; import com.pig4cloud.pigx.common.gray.feign.GrayFeignRequestInterceptor; -import com.pig4cloud.pigx.common.gray.rule.GrayLoadBalancerClientConfigurationRegistrar; +import com.pig4cloud.pigx.common.gray.rule.GrayLoadBalancerClientConfiguration; import feign.RequestInterceptor; + import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClients; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; /** * @author lengleng @@ -31,7 +32,7 @@ import org.springframework.context.annotation.Import; */ @Configuration @ConditionalOnProperty(value = "gray.rule.enabled", havingValue = "true") -@Import(GrayLoadBalancerClientConfigurationRegistrar.class) +@LoadBalancerClients(defaultConfiguration = GrayLoadBalancerClientConfiguration.class) public class GrayLoadBalancerAutoConfiguration { @Bean diff --git a/pigx-common/pigx-common-gray/src/main/java/com/pig4cloud/pigx/common/gray/rule/GrayLoadBalancerClientConfigurationRegistrar.java b/pigx-common/pigx-common-gray/src/main/java/com/pig4cloud/pigx/common/gray/rule/GrayLoadBalancerClientConfigurationRegistrar.java deleted file mode 100755 index 0fe2f94f3..000000000 --- a/pigx-common/pigx-common-gray/src/main/java/com/pig4cloud/pigx/common/gray/rule/GrayLoadBalancerClientConfigurationRegistrar.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.pig4cloud.pigx.common.gray.rule; - -import cn.hutool.core.util.ReflectUtil; -import com.pig4cloud.pigx.common.core.constant.ServiceNameConstants; -import org.springframework.beans.factory.support.BeanDefinitionBuilder; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; -import org.springframework.cloud.loadbalancer.annotation.LoadBalancerClientSpecification; -import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; -import org.springframework.core.type.AnnotationMetadata; - -import java.lang.reflect.Field; - -/** - * @author lengleng - * @date 2020/11/20 - */ -public class GrayLoadBalancerClientConfigurationRegistrar implements ImportBeanDefinitionRegistrar { - - private static void registerClientConfiguration(BeanDefinitionRegistry registry, Object name, - Object configuration) { - BeanDefinitionBuilder builder = BeanDefinitionBuilder - .genericBeanDefinition(LoadBalancerClientSpecification.class); - builder.addConstructorArgValue(name); - builder.addConstructorArgValue(configuration); - registry.registerBeanDefinition(name + ".LoadBalancerClientSpecification", builder.getBeanDefinition()); - } - - @Override - public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) { - Field[] fields = ReflectUtil.getFields(ServiceNameConstants.class); - - // 遍历服务名称,注入支持灰度策略的负载均衡器 - for (Field field : fields) { - Object fieldValue = ReflectUtil.getFieldValue(ServiceNameConstants.class, field); - registerClientConfiguration(registry, fieldValue, GrayLoadBalancerClientConfiguration.class); - } - } - -}