目录

1 引入依赖

2 编写调用接口,指定要调用的微服务及其接口方法

3 启动类添加@EnableFeignClients 注解

4 测试,发起远程服务调用


使用 openfeign 作为服务间调用组件, 业务场景: 用户查询优惠券

引入依赖

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

编写调用接口,指定要调用的微服务及其接口方法

// 1. 远程服务配置,统一接口前缀 = /coupon
@FeignClient(value = "cmgmall-coupons",path = "/coupon")
public interface CouponsFeignService {

    // 2. 接口地址:GET 请求 /coupon/list
    @RequestMapping(value = "/list", method = RequestMethod.GET)
    // 3. 响应体注解(Feign 中可省略)
    @ResponseBody
    // 4. 方法定义:返回通用结果集,入参=使用状态 + 请求头会员ID
    CommonResult<List<SmsCouponHistory>> list(
        @RequestParam(value = "useStatus", required = false) Integer useStatus,
        @RequestHeader("memberId") Long memberId
    );
}

启动类添加@EnableFeignClients 注解

@SpringBootApplication
@EnableFeignClients  // 核心:开启Feign远程调用
public class CmgmallMemberApplication {
    public static void main(String[] args) {
        SpringApplication.run(CmgmallMemberApplication.class, args);
    }
}

测试,发起远程服务调用

@RestController
public class MemberController {

    @Autowired
    private CouponsFeignService couponsFeignService;

    @RequestMapping(value = "/coupons", method = RequestMethod.GET)
    public CommonResult getCoupons(
            @RequestParam(value = "useStatus", required = false) Integer useStatus,
            @RequestHeader("memberId") Long memberId
    ){
        // 通过 OpenFeign 远程调用优惠券服务
        return couponsFeignService.list(useStatus, memberId);
    }
}

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐