提交 1e9f3558 编写于 作者: J jarvis

feat: 1. 修改feign拦截器,版本传递只从header中获取2. 修改版本选择,增加选择版本号为空字符串的版本3. 还原FeignIntercptor配置

上级 6cc797ef
package com.central.common.lb.annotation;
import com.central.common.lb.config.FeignHttpImportBeanDefinitionRegistrar;
import com.central.common.lb.config.FeignHttpInterceptorConfig;
import com.central.common.lb.config.FeignInterceptorConfig;
import org.springframework.context.annotation.Import;
......@@ -18,8 +17,7 @@ import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(FeignHttpImportBeanDefinitionRegistrar.class)
//@Import({FeignInterceptorConfig.class, FeignHttpInterceptorConfig.class})
@Import({FeignInterceptorConfig.class, FeignHttpInterceptorConfig.class})
public @interface EnableFeignInterceptor {
}
......
package com.central.common.lb.config;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanNameGenerator;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.util.ClassUtils;
import javax.servlet.Filter;
/**
* 示例
*
* @author jarvis create by 2022/5/8
*/
public class FeignHttpImportBeanDefinitionRegistrar implements ImportBeanDefinitionRegistrar {
@Override
public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry, BeanNameGenerator importBeanNameGenerator) {
try {
Class.forName("javax.servlet.Filter", false, registry.getClass().getClassLoader());
AbstractBeanDefinition feignHttpInterceptorConfig = BeanDefinitionBuilder.genericBeanDefinition(FeignHttpInterceptorConfig.class).getBeanDefinition();
registry.registerBeanDefinition(importBeanNameGenerator.generateBeanName(feignHttpInterceptorConfig, registry), feignHttpInterceptorConfig);
AbstractBeanDefinition feignInterceptorConfig = BeanDefinitionBuilder.genericBeanDefinition(FeignInterceptorConfig.class).getBeanDefinition();
registry.registerBeanDefinition(importBeanNameGenerator.generateBeanName(feignInterceptorConfig, registry), feignInterceptorConfig);
} catch (ClassNotFoundException e) {
}
}
}
......@@ -60,16 +60,6 @@ public class FeignHttpInterceptorConfig {
}
}
}
// 增加从query上获取版本
String queryString = request.getQueryString();
if(StringUtils.isNotBlank(queryString)){
Map<String, String> map = QueryUtils.getQueryMap(queryString);
for (String requestHeader : requestHeaders) {
if(map.containsKey(requestHeader)){
template.header(requestHeader, map.get(requestHeader));
}
}
}
//传递access_token,无网络隔离时需要传递
/*
String token = extractHeaderToken(request);
......
......@@ -87,7 +87,8 @@ public class VersionLoadBalancer implements ReactorServiceInstanceLoadBalancer {
// 如果没有找到对应的版本实例时,选择版本号为空的或这版本为default的实例
if(CollectionUtils.isEmpty(filteredServiceIstanceList)){
filteredServiceIstanceList = instances.stream()
.filter(item->!item.getMetadata().containsKey(CommonConstant.METADATA_VERSION)
.filter(item->!item.getMetadata().containsKey(CommonConstant.METADATA_VERSION)||
StringUtils.isBlank(item.getMetadata().get(CommonConstant.METADATA_VERSION))
|| "default".equals(item.getMetadata().get(CommonConstant.METADATA_VERSION)))
.collect(Collectors.toList());
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册