分布式组件-SpringCloud-OpenFeign远程调用

想要远程调用别的服务(必须在注册中心开启才能使用远程调用,否则会调用失败)

1、先在想要调用别的服务的模块内引入open-feign依赖

        <!--    OpenFeign远程调用    -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

2、再编写一个接口,告诉SpringCloud这个接口需要远程服务

      然后在接口的上方添加注解@FeignClient("被调用的服务名称"),

      如@FeignClient("gulimall-coupon")这个被调用服务的名称是注册中心的名称

      如图:

比如我们在优惠券模块(coupon)内写了一个方法,然后我们的会员模块(member)需要调用优惠券模块,我们此时就需要使用到远程调用

我们在优惠券模块内写了一个方法如:

@RestController
@RequestMapping("coupon/coupon")
public class CouponController {

    @RequestMapping("/member/list")
    public R membercounpons(){
        CouponEntity couponEntity=new CouponEntity();
        couponEntity.setCouponName("满100减30");
        return R.ok().put("coupons",Arrays.asList());
    }
}

然后我们的会员模块(member)需要远程调用这个方法随后我们需要在刚刚定义的那个接口中编写如下代码

@FeignClient("gulimall-coupon")
public interface CouponFeignService {
    @RequestMapping("/coupon/coupon/member/list")
    public R membercounpons();
}

代码中所写了需要调用的方法名称以及该方法的全路径,

随后开启远程调用功能

添加注解@EnableFeignClients 该注解中有一个属性basePackages,指的是我们远程调用接口的路径

/**
 * 1.想要远程调用别的服务
 * 2.引入open-feign依赖
 * 3.编写一个接口添加注解@FeignClient("gulimall-coupon"),告诉Spring-cloud这个接口需要调用远程服务
 * 4.声明接口的每一个方法都是调用哪个远程服务的哪个请求
 * 5.开启远程调用功能添加注解
 */

@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }

}

如图:

将上诉所写举个例子,在会员里面创建一个方法去远程调用优惠券

/**
 * 会员
 *
 * @author chenzhibo
 * @email chenzhibo@gmail.com
 * @date 2024-01-23 16:53:19
 */
@RestController
@RequestMapping("member/member")
public class MemberController {

    @Autowired
    CouponFeignService couponFeignService;

    @RequestMapping("coupons")
    public R test(){
        MemberEntity memberEntity=new MemberEntity();
        memberEntity.setNickname("张三");

        R membercoupons=couponFeignService.membercounpons();

        return R.ok().put("member",memberEntity).put("coupons",membercoupons.get("coupons"));
    }
运行结果如下,这就是远程调用的简单使用方式了
  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值