Feign在微服务中的一般使用

Posted on 2022-09-24 19:46  林安静  阅读(99)  评论(0编辑  收藏  举报

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格式要保持一致

  1. Mapping方式要对齐,即Post Get Put Delete
  2. @RequestBody要对应
  3. 请求方的请求地址要写全,比如下面的"coupon/spubounds/save"
  4. 由于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();
}