Feign远程调用

    技术2022-07-10  125

    说明:

    分布式远程调用,feign。下面以电商项目的会员服务(member)与优惠服务(coupon)进行演示。如有错,请大佬指点

    一、 导入包(使用远程调用的服务都要导)。

    <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>

    二、会员服务调用优惠服务,先在优惠服务Controller写方法

    @RestController @RequestMapping("coupon/coupon") public class CouponController { @Autowired private CouponService couponService; //返回一张优惠券,满100减10 @RequestMapping("/member/list") public R memberCoupons(){ CouponEntity couponEntity = new CouponEntity(); couponEntity.setCouponName("满100减10"); return R.ok().put("coupons",Arrays.asList(couponEntity)); }

    三、会员服务创建feign包,创建一个接口。

    package com.atguigu.gulimall.member.feign; import com.atguigu.common.utils.R; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.RequestMapping; //这里的注解是告诉服务器,我是一个远程调用,gulimall-coupon指的是在服务中心服务的名字 @FeignClient("gulimall-coupon") public interface CouponFeignService { //下面是声明式接口,把优惠服务的请求复制粘贴过来即可。没有实现体。 @RequestMapping("/coupon/coupon/member/list") public R memberCoupon(); }

    四、在会员控制层调用feign

    @RestController @RequestMapping("member/member") public class MemberController { @Autowired private MemberService memberService; //把feign注入进来 @Autowired private CouponFeignService couponFeignService; @RequestMapping("/coupons") public R test(){ MemberEntity memberEntity = new MemberEntity(); memberEntity.setNickname("张三"); //调用feign的方法 R memberCoupons = couponFeignService.memberCoupon(); //这里的memberCoupons.get("coupons")是优惠控制层put进去的key return R.ok().put("member",memberEntity).put("coupons",memberCoupons.get("coupons")); }

    五、会员服务主启动类开启feign扫描。并启动会员服务和优惠服务

    @EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")

    六、访问会员服务的test方法

    http://localhost:8000/member/member/coupons

    七、访问成功

    {"msg":"success","code":0,"coupons":{"msg":"success","code":0,"coupons":[{"id":null,"couponType":null,"couponImg":null,"couponName":"满100减10","num":null,"amount":null,"perLimit":null,"minPoint":null,"startTime":null,"endTime":null,"useType":null,"note":null,"publishCount":null,"useCount":null,"receiveCount":null,"enableStartTime":null,"enableEndTime":null,"code":null,"memberLevel":null,"publish":null}]},"member":{"id":null,"levelId":null,"username":null,"password":null,"nickname":"张三","mobile":null,"email":null,"header":null,"gender":null,"birth":null,"city":null,"job":null,"sign":null,"sourceType":null,"integration":null,"growth":null,"status":null,"createTime":null}}
    Processed: 0.015, SQL: 9