1.首先确认配置环境
1.1 是否微服务之间都已注册进配置中心且未被相互隔离(如nacos)
1.2 是否开启注解
/**
* 使用FeignClient端的微服务(请求)
**/
//Application.java
@EnableDiscoveryClient //开启微服务配置中心发现功能
@EnableFeignClients(basePackages
= "com.atguigu.gulimall.member.feign") //开启FeignClient,并设置包地址
//FeignServiceInterface.java
@FeignClient(value = "serviceName") //在每个FeignClient的接口上开启,即可达到RestFul的Api请求效果, value对应响应方微服务的·服务名·(一般写于yml配置文件)
2.具体使用
2.1定义一个微服务之间传输对象TO
将Client请求方的数据封装Bean为TO
2.2类似Controller的写法,与响应方的Controller格式要保持一致
- Mapping方式要对齐,即Post Get Put Delete
- @RequestBody要对应
- 请求方的请求地址要写全,比如下面的"coupon/spubounds/save"
- 由于Feign传输也是JSON方式,故请求与响应的对象不需要一致,但属性键值对要一致
/**
* 使用FeignClient端的微服务(请求)
**/
//FeignServiceInterface.java
@PostMapping("coupon/spubounds/save")
R saveSpuBounds(@RequestBody SpuBoundsTO spuBoundsTO);
/**
* 接收方微服务(响应)的Controller
**/
//Controller.java
@PostMapping("/save")
public R save(@RequestBody SpuBoundsEntity spuBounds){
spuBoundsService.save(spuBounds);
return R.ok();
}