千家信息网

SpringCloud远程服务怎么调用

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍SpringCloud远程服务怎么调用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!笔记在微服务中,若想要使用远程调用,需要引入spring-cloud-sta
千家信息网最后更新 2026年11月01日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安全错误 数据库的锁怎样保障安全 深圳市人人互联网科技有限公司 广州为想互联网科技有限公司 互联网与科技金融数据 亿策互联网科技 成都互联网科技公司 极限挑战互联网科技 百单互联网科技有限公司 融势互联网科技 睿民互联网科技 互联网科技的未来发展 多迪互联网科技有限公司 互联网 科技服务平台 世界互联网科技公司市值排名 知域互联网科技有限公司大骗子 呼和浩特新华互联网科技学院 互联网企业科技类企业如何做账 广州富喜互联网络科技 互联网相关科技技术 互联网金融运营模式中的金融科技 兰石爱特工业互联网科技分公司 天津市摩尔互联网科技 互联网科技公司怎么样 现代科技和互联网有关系吗 深圳国际航运科技和互联网 互联网科技有哪些公司 威龙国际互联网科技公司 富国互联网金融科技混合基金 互联网科技平台产品运营 互联网科技新闻 互联网金融金融科技
0