1.オープンフェイグを導入する
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2.インターフェースを作成し、このインターフェースがリモートサービスを呼び出す必要があることをSpringCloudに通知します
- インターフェイスはこのサービスで記述されています。
@FeignClient(value = "")
、value
呼び出されるリモートサービスの名前。
@RequestMapping(value = "")
、value
リモートサービスのメソッドリクエストパス。
- このインターフェースの意味は、呼び出すサービスとメソッドです。
- インターフェイスの各メソッドが、どのリモートサービスを呼び出す要求であるかを宣言します
@FeignClient(value = "application.name")
public interface CouponFeignService {
@RequestMapping("请求路径")
public R coupons();
}
3.リモートサービスコールを開きます
@EnableFeignClients
リモートサービス呼び出しを開き、basePackages
インターフェイスが配置されているパッケージを宣言します(記述する必要はありません)。
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients(basePackages = "")
public class MemberApplication {
public static void main(String[] args) {
SpringApplication.run(MemberApplication.class, args);
}
}
4.リモートデータを要求する方法は2つあります(ゲートウェイが構成されている場合)。
- すべてのリクエストがゲートウェイに送信され、ゲートウェイによって対応するサービスに転送されるようにします
- 上記のようにサービスに直接送信します
5.サービスをリモートで呼び出すプロセス
* 1 FeignService.saveXXX(XXXTo)
* 1 SpringCloud 会将这个对象转为json
* 2 找到对应的微服务,给相应请求/xx/xxx发送请求
* 将上一步转的jso放在请求位置,发送请求
* 3 对方服务受到请求,请求体里面有json数据,
* @RequestBody XXXEntity xxx 将请求体的json转为XXXEntity
* 只要json数据模型是兼容的,双方服务无需使用同一个to