当前位置: 首页 > news >正文

动态调用微服务

主要由三个文件组成

DynamicService.java

DynamicFeignClientFactory.java

DynamicClient.java

代码

package org.jeecg.modules.cloud.feign;import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;/*** Description: 通用接口,里面定义通用方法* 注意: 由于服务生产者所有的接口的返回值都是json格式的字符串,* 所以这里的通用接口的返回值最好使用String类型!!!*/
public interface DynamicService {/*** post方法对应的方法** @param url    服务生产者Handler方法请求映射地址* @param params 服务生产者Handler方法参数* @return*/@PostMapping(value = "{url}")String executePostRequest(@PathVariable("url") String url, @RequestBody Object params);@GetMapping(value = "{url}")String executeGetRequest(@PathVariable("url") String url, @SpringQueryMap Object params);
}
package org.jeecg.modules.cloud.feign;import org.springframework.cloud.openfeign.FeignClientBuilder;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;/*** Description: FeignClient工厂类,根据服务名称创建FeignClient对象(代理对象)*/
@Component
public class DynamicFeignClientFactory <T>{private FeignClientBuilder feignClientBuilder;public DynamicFeignClientFactory(ApplicationContext applicationContext){this.feignClientBuilder = new FeignClientBuilder(applicationContext);}//动态生成feignClient对象(代理对象)public T getFeignClient(final Class<T> type,String ServiceID){return this.feignClientBuilder.forType(type,ServiceID).build();}
}
package org.jeecg.modules.cloud.feign;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;/** Description: 通过FeignClient工厂获取到的FeignClient对象通过指定的请求去调用生产者方法!*/
@Component
public class DynamicClient {@Autowiredprivate DynamicFeignClientFactory<DynamicService> dynamicDynamicFeignClientFactory;public Object executePostApi(String feignName, String url, Object params) {DynamicService dynamicService = dynamicDynamicFeignClientFactory.getFeignClient(DynamicService.class, feignName);return dynamicService.executePostRequest(url, params);}public Object executeGetApi(String feignName, String url, Object params) {DynamicService dynamicService = dynamicDynamicFeignClientFactory.getFeignClient(DynamicService.class, feignName);return dynamicService.executeGetRequest(url, params);}}

DynamicClient 提供了两个方法 get 和 post

http://www.lryc.cn/news/165373.html

相关文章:

  • 什么是字符集什么是字符编码
  • Python小项目之Tkinter应用】随机点名/抽奖工具大优化:新增查看历史记录窗口!语音播报功能!修复预览文件按钮等之前版本的bug!
  • mysql drop table 死锁
  • Git零基础入门(Linux版)
  • 二维多孔介质图像的粒度分布研究(Matlab代码实现)
  • 文盘Rust——子命令提示,提高用户体验 | 京东云技术团队
  • 同源策略简介
  • 数据量大,分析困难?试试pandas随机抽样
  • stm32---外部中断
  • 电子企业MES管理系统实施的功能和流程有哪些
  • 代码随想录二刷day24
  • 谷粒商城篇章6 ---- P193-P210 ---- 异步线程池商品详情【分布式高级篇三】
  • gcc中的cc1 collect2
  • 学习day59
  • Go Tip02 指针类型 、值类型和引用类型 、标识符的命名规范
  • CSS中如何实现文字跑马灯效果?
  • 《昆明海晏村:修缮后的新生,历史与现代的完美交融》
  • C++ --- Day02 封装
  • 墨西哥专线清关有什么要求?
  • SpringMVC中的JSR303与拦截器的使用
  • 神经网络 01(介绍)
  • 【element-ui】el-date-picker 之picker-options时间选择区间禁用效果的实现
  • Exchange Serve各版本说明及下载
  • 软件测试 | 当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?
  • 15.3K Star,超好用的开源协作式数字白板:tldraw
  • MGR新节点RECOVERING状态的分析与解决:caching_sha2_password验证插件的影响
  • git merging两边都被删除的文件
  • 项目--苍穹外卖
  • 从零开发短视频电商 使用Spring WebClient发起远程Http调用
  • Python实现成语接龙