动态feign调用

编程入门 行业动态 更新时间:2024-10-27 06:31:32

<a href=https://www.elefans.com/category/jswz/34/1771299.html style=动态feign调用"/>

动态feign调用

1.上下文类

@Component("springContextS")
public class SpringContextS implements ApplicationContextAware{private static ApplicationContext applicationContext;public void setApplicationContext(ApplicationContext applicationContext) throw BeansException {SpringContextS.applicationContext = applicationContext;    }public static ApplicationContext getApplicationContext(){return applicationContext;}
}

2.Feign工具类

public class FeignClientUtils {private static final Map<String,Object> FEIGN_CACHE = new ConcurrentHashMap();private static <T> T build(String type,String server,Class<T> clazz){String key = String.format("%s-%s",type,server);T t = (T) FEIGN_CACHE.get(key);if(Objects.isNull(t)){FeignClientBuilder.Builder<T> builder = new FeignClientBuilder(SpringContextS.getApplicationContext()).forType(clazz,server):builder = builder.contextId(UUID.randomUUID().toString());t = builder.build();FEIGN_CACHE.put(key,t);}return t;}
}

3.Feign接口模板

public interface FeignClientTemplate {@PostMapping("/TEMPLATE/list")Result<List<ResDTO>> list(@RequestBody ReqDTO dto); 
}

4.Feign拦截器

@Configuration
public class TempFeignInterceptor implements RequestInterceptor{@Overridepublic void apply(RequestTemplate template){String server = template.feignTarget().name.toLowerCase();String url = "/" + server+"/test"String tempUrl = template.url();if(StringUtils.isNotEmpty(templateUrl){if(tempUrl.contains("TEMPLATE")){template.uri(tempUrl.replace("TEMPLATE",url);}}}
}

5.使用


public void use(ReqDTO dto){FeignClientTemplate client = FeignClientUtils.build("TEXT","TEXT",FeignClientTemplate.class);Result< List<ResDTO>> result =  client.list(dto);
}

更多推荐

动态feign调用

本文发布于:2023-12-04 18:26:41,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1661831.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:动态   feign

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!