千家信息网

SpringCloud远程服务怎么调用

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍SpringCloud远程服务怎么调用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!笔记在微服务中,若想要使用远程调用,需要引入spring-cloud-sta
千家信息网最后更新 2025年11月07日SpringCloud远程服务怎么调用

这篇文章主要介绍SpringCloud远程服务怎么调用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

笔记

在微服务中,若想要使用远程调用,需要引入spring-cloud-starter-openfeign(在使用注册中心的环境下)

  org.springframework.cloud  spring-cloud-starter-openfeign  xxx

由于open-feign是声明式的远程调用,所以需要编写一个接口,并且告诉SpringCloud这个接口需要调用远程服务。这个接口我放在公共模块下的feign中。

package top.ctong.gulimall.common.feign;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestParam;import top.ctong.gulimall.common.utils.R;import java.util.Map;@FeignClient("gulimall-coupon")@RequestMapping("/coupon/coupon")public interface CouponFeignService {    /**     * 通过自定义参数查询列表     * @param params 自定义参数     * @return R     * @author Clover You     * @date 2021/11/17 09:11     */    @RequestMapping("/list")    R list(@RequestParam Map params);}

@FeignClient("xxx") 该注解用于告诉SpringCloud这是一个远程调用接口,其中的value是你在注册中心中注册的服务名。

接口方法签名需要与被调用的远程服务签名一致,例如上面哪个代码要调用的远程服务:

package top.ctong.gulimall.coupon.controller;@RestController@RequestMapping("coupon/coupon")public class CouponController {    @Autowired    private CouponService couponService;    /**     * 列表     */    @RequestMapping("/list")    //@RequiresPermissions("coupon:coupon:list")    public R list(@RequestParam Map params){        PageUtils page = couponService.queryPage(params);        return R.ok().put("page", page);    }}

接着还要使用@EnableFeignClients开启当前需要使用远程调用的这个服务的远程调用,并且指定你的远程调用接口在哪个包下。

@EnableFeignClients(basePackages = "top.ctong.gulimall.common.feign")@EnableDiscoveryClient@MapperScan("top.ctong.gulimall.member.dao")@SpringBootApplicationpublic class GulimallMemberApplication {    public static void main(String[] args) {        SpringApplication.run(GulimallMemberApplication.class, args);    }}

@EnableFeignClients 该注解用于开启当前服务的远程调用功能

basePackages 用于指定远程调用接口所在的包,方便服务启动的时候可以快速扫描到。他可以接收多个包名,因为它是一个String[]

最后在需要远程调用时注入对应的远程调用接口就好

package top.ctong.gulimall.member.controller;@RestController@RequestMapping("member/member")public class MemberController {    private final CouponFeignService couponFeignService;    @Autowired    public MemberController(CouponFeignService couponFeignService, MemberService memberService) {        this.couponFeignService = couponFeignService;        this.memberService = memberService;    }      @RequestMapping("/testFeignInvoke")    public R testFeignInvoke() {        Map parem = new HashMap<>(10);        return couponFeignService.list(parem);    }}

错误(nacos)

如果在启动时出现 No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalancer? 错误,那么就是你的SpringCloud版本比较高,在高版本的SpringCloud中已经不再使用 spring-cloud-starter-netflix-ribbon 了,而是使用 spring-cloud-starter-loadbalancer 。而nacos还是使用的 spring-cloud-starter-netflix-ribbon

pom.xml文件中引入 spring-cloud-starter-loadbalancer 再启动就没毛病了。

  org.springframework.cloud  spring-cloud-starter-loadbalancer  3.0.4

在测试远程调用中发生 AbstractMethodError 异常。需要在 pom.xml 中排除 nacos 中引入的 ribbon 。否则 spring-cloud-starter-loadbalancer 无法工作。

  com.alibaba.cloud  spring-cloud-starter-alibaba-nacos-discovery            com.netflix.ribbon      ribbon      

以上是"SpringCloud远程服务怎么调用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

服务 接口 内容 参数 注解 版本 篇文章 错误 一致 代码 价值 兴趣 功能 多个 小伙 小伙伴 就是 所在 文件 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全防护专业人才要求 地铁逃生如何选择其他服务器 计算机的网络安全连接 戴尔服务器蓝屏初始化无法进入 计算机网络技术四级教材电子版 国际军事网络安全事件 服务器里面的游戏怎么安装 数据库约束的特征 批量管理戴尔服务器 安卓软件开发服务咨询 普陀区创新软件开发要多少钱 sql新增数据库语句 电子传真服务器 采购软件开发可行性研究报告 互联网 科技心得体会 哪个不是网络安全建设的驱动力 数据库 表 输入数据 恒生互联网科技业指数成分股比例 长宁区品牌软件开发承诺守信 计算机网络安全其含义 面试官问你网络安全是怎么做的 西安微信小程序软件开发 宁夏网络技术服务 东华软件开发部待遇 中学网络技术防范措施 沈阳哪个软件开发好 软件开发部经理升职 徐州专业联想服务器安装 滁州哪个服务器最好 防溺水网络安全竞赛入口
0