给模块的POM.xml文件依赖openfeign
远程调用的步骤:
1/想要远程调用别的服务
1.引入openfeign
2.编写一个接口,告诉SpringCloud这个接口需要调用远程服务
3.在调用别的服务的方法上开启远程调用功能@EnableFeignClients
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
想要使用会员模块远程调用优惠券模块
,需咬现在coupon模块中的CouponController中先生成一张优惠券
在public class CouponController{}中添加
//查看用户所有优惠券的方法
@RequestMapping("/member/list")
public R membercoupons(){
CouponEntity couponEntity = new CouponEntity();
couponEntity.setCouponName("满100减10");
return R.ok().put("coupons",Arrays.asList(couponEntity));
}
2.在member模块com.atguigu.gulimall.member创建feign包,创建CouponFeignService抽象方法,并将com.atguigu.gulimall.coupon.controller.CouponController内上面我们创建的方法复制进来
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;
//@FeignClient注解,声明需要调用注册中心中的服务名("gulimall-coupon")
@FeignClient("gulimall-coupon")
public interface CouponFeignService {
//复制过来的方法路径为("/member/list"),但我们是从外部访问,所以要补全路径("/coupon/coupon/member/list")
@RequestMapping("/coupon/coupon/member/list")
public R membercoupons();
}
程序先找@FeignClient(“gulimall-coupon”)声明的gulimall-coupon位置,再发送@RequestMapping(“/coupon/coupon/member/list”)请求到这个位置执行public R membercoupons()方法
3.@EnableFeignClients(basePackages = “com.atguigu.gulimall.member.feign”)
所有远程调用的接口都放在了feign包下,声明后只要程序启动就会扫描此路径下所有注解了@FeignClient的接口进而执行接口的请求
测试一下
在com.atguigu.gulimall.member.controller.MemberController中增加一个会员并设置昵称为张三
//获取当前会员所有的优惠券
@Autowired
CouponFeignService couponFeignService;
@RequestMapping("/coupons")
public R test(){
MemberEntity memberEntity = new MemberEntity();
memberEntity.setNickname("张三");
R membercoupons = couponFeignService.membercoupons();
return R.ok().put("member",memberEntity).put("coupon",membercoupons.get("coupons"));
}
远程调用之前生成的优惠券
上线2个服务
在member服务中发送/member/member/coupons请求可以得到用户的所有coupons
{"msg":"success","code":0,"coupon":[{"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}}