1.引入远程调用依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.被调用方编写业务代码
/**
* 会员的所有优惠券信息
* @return
*/
@RequestMapping("/member/list")
public R membercoupons(){
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("满100减10");
return R.ok().put("coupons",Arrays.asList(couponEntity));
}
3. 编写一个接口,告诉springcloud这个接口需要调用远程服务
// @FeignClient声明这是一个远程客户端,括号内填写调用远程服务名称
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
@RequestMapping("/coupon/coupon/member/list")
public R membercoupons();
}
4.编写测试类,声明每一个方法都是调用远程服务的哪个请求
@RequestMapping("/coupons")
public R test(){
// 本地测试用的会员身份信息
MemberEntity memberEntity = new MemberEntity();
memberEntity.setNickname("张三");
// 远程调用访问到的优惠券信息
R membercoupons = couponFeignService.membercoupons();
return R.ok().put("member",memberEntity).put("coupons",membercoupons.get("coupons"));
}
5.启动类上使用注解开启远程调用
@EnableFeignClients(basePackages = "com.atguigu.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
public class GulimallMemberApplication {
public static void main(String[] args) {
SpringApplication.run(GulimallMemberApplication.class, args);
}
}
调用方的启动类上需要注解 @EnableFeignClients(basepackage = “远程调用编写的接口”),
编写的接口上需要注解 @FeignClient(“被调用方的服务名称”)