第十章:SpringCloud组件-Feign远程调用

示例:在mall-member中远程调用mall-coupon的优惠券信息

1:在onlinemall-member中引入openfeign依赖

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

2:在onlinemall-coupon中构建被调用的业务

com.applesnt.onlinemall.coupon.controller.CouponController

/*模拟获取会员优惠券*/
@RequestMapping("/member/coupons")
public R couponList(){
    //创建一个优惠券对象
    CouponEntity couponEntity = new CouponEntity();
    couponEntity.setCouponName("立减100");
    //返回这个优惠券对象
    return R.ok().put("coupons",couponEntity);
}

3:在onlinemall-member中构建远程调用接口

在com.applesnt.onlinemall.member目录下创建feign包,所有的涉及到coupon的远程接口都写在这个包下

接着在com.applesnt.onlinemall.member.feign目录下创建优惠券的远程调用接口CouponFeignService

1、增加注解:@FeignClient
2、把需要调用的业务签名(方法)复制过来即可,注意签名的RequestMapping路径要写全路径
/*onlinemall-coupon:表示被远程调用的服务注册名称*/
@FeignClient("onlinemall-coupon")
public interface CouponFeignService {

    //把被调用业务的签名复制过来即可,RequestMapping要写全路径
    @RequestMapping("/coupon/coupon/memeber/couponlist")
    public R memeberCoupon();
}

4:在onlinemall-member的启动类中开启远程调用

增加注解:@EnableFeignClients

//开启远程调用,basePackages表示接口所在的位置
@EnableFeignClients(basePackages = "com.applesnt.mall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class MallMemberApplication {

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

5:在onlinemall-member中测试远程调用

com.applesnt.onlinemall.member.controller.MemberController

@RestController
@RequestMapping("member/member")
public class MemberController {
    @Autowired
    private MemberService memberService;
    //注入远程调用接口
    @Autowired
    private CouponFeignService couponFeignService;

    /*
    *浏览器访问,查看远程调用的输出结果
    *http://localhost:8000/member/member/coupons
    **/
    @RequestMapping("/coupons")
    public R getMemberCoupon(){
        return R.ok().put("coupons",couponFeignService.couponList());
    }

6:访问

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

posted @ 2021-05-30 11:55  努力的校长  阅读(69)  评论(0编辑  收藏  举报