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

SpringCloud远程服务调用

下面介绍在SpringCloud中如何使用openfeign实现远程服务调用

1.在字典服务中有这么2个接口

@Api(tags = "数据字典接口")
@RestController
@RequestMapping("/admin/cmn/dict/")
@CrossOrigin
public class DictController {@Autowiredprivate DictService dictService;//根据dictCode和value获取字典名称@GetMapping("/geDictName/{dictCode}/{value}")public String getDictName(@PathVariable String dictCode,@PathVariable String value){return  dictService.getDictName(dictCode,value);}//根据value获取字典名称@GetMapping("/geDictName/{value}")public String getDictName(@PathVariable String value){return  dictService.getDictName("",value);}
}

2.其他微服务需要调用字典服务上面2个接口以实现将字典值转变为可识别的中文名称。下面说下实现的步骤:

2.1)在需要远程调用的微服务pom文件中引入依赖:

        <!-- 服务调用feign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- 服务注册 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>

2.2)写一个interface,远程调用字典服务的2个接口

@FeignClient("service-cmn")
@Repository
public interface DictFeignClient {@GetMapping("/admin/cmn/dict/geDictName/{dictCode}/{value}")public String getDictName(@PathVariable("dictCode") String dictCode,@PathVariable("value") String value);@GetMapping("/admin/cmn/dict/geDictName/{value}")public String getDictName(@PathVariable("value") String value);
}

这里需要注意,注解@PathVariable后面需要指明变量名,如@PathVaribale("value")否则会导致找不到(原接口中可不用写)。先用注解@FeignClient("service-cmn")指定要远程调用的微服务名,其次使用@Repository注解防止引用时红线警告,不写不影响正常使用。

2.3)在启动类上加上注解@EnableFeignClients(basePackages = "com.www"),开启远程调用,并指明扫描的包类

@SpringBootApplication
@MapperScan(basePackages = "com.www.hosp.mapper")
@ComponentScan(basePackages = "com.www")
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "com.www")
public class ServiceHospApplication {public static void main(String[] args) {SpringApplication.run(ServiceHospApplication.class,args);}
}

保障能实现远程调用的前提条件:这2个服务在注册中心完成注册,并且服务能正常访问。

如此并可实现远程调用其他微服务。

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

相关文章:

  • Arcgis通过模型构建器计算几何坐标
  • java设计模式-工厂模式(下)
  • 深蓝学院C++基础与深度解析笔记 第13章 模板
  • 装饰器模式——扩展系统功能
  • 无涯教程-jQuery - jQuery.get( url, data, callback, type )方法函数
  • 【Vue3】递归组件
  • 【Python】数据分析+数据挖掘——探索Pandas中的索引与数据组织
  • matlab进阶:求解在约束条件下的多元目标函数最值(fmincon函数详解)
  • Kotlin知识点
  • 亚马逊云科技联合霞光社发布《2013~2023中国企业全球化发展报告》
  • 【解析excel】利用easyexcel解析excel
  • JQuery操作单选按钮Radio和复选框checkbox
  • 7.28 作业 QT
  • HTML <pre> 标签
  • 查询结果元数据-MetaData对象、数据库工具类的封装、通过反射实现数据查询的封装
  • 【Minio中间件】上传图片并Vue回显
  • Jmeter配置不同业务请求比例,应对综合场景压测
  • 数学分析:流形的线性代数回顾
  • 前端请求后端接口返回错误码
  • 【Java Web】Nacos 介绍和安装教程
  • web漏洞-java安全(41)
  • 用CSS和HTML写一个水果库存静态页面
  • 【回眸】备考PMP考点汇总 三(距离考试还有20天)
  • 新房的收房验房注意事项
  • ARM裸机-5
  • SpringCloud学习路线(11)——分布式搜索ElasticSeach场景使用
  • 负数补码表示
  • ChatGPT结合知识图谱构建医疗问答应用 (一) - 构建知识图谱
  • C++ 类和对象
  • c# 此程序集中已使用了资源标识符