SpringCloud-Feign

5e1e844e0001ac9719201080.jpg(1920×1080)

package com.imooc.product.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ServerController {

    @GetMapping("/msg")
    public String msg() {
        return "this is product' msg";
    }
}
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
package com.imooc.order;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class OrderApplication {

	public static void main(String[] args) {
		SpringApplication.run(OrderApplication.class, args);
	}
}
package com.imooc.order.client;

import com.imooc.order.dataobject.ProductInfo;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;

@FeignClient(name = "product")
public interface ProductClient {

    @GetMapping("/msg")
    String productMsg();

    @PostMapping("/product/listForOrder")
    List<ProductInfo> listForOrder(@RequestBody List<String> productIdList);
}
package com.imooc.order.controller;

import com.imooc.order.client.ProductClient;
import com.imooc.order.dataobject.ProductInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;

@RestController
@Slf4j
public class ClientController {

    @Autowired
    private ProductClient productClient;

    @GetMapping("/getProductMsg")
    public String getProductMsg() {
        String response = productClient.productMsg();
        log.info("response={}", response);
        return response;
    }

    @GetMapping("/getProductList")
    public String getProductList() {
        List<ProductInfo> productInfoList = productClient.listForOrder(Arrays.asList("164103465734242707"));
        log.info("response={}", productInfoList);
        return "ok";
    }
}

Feignは、アプリケーション間の通信、注文商品の商品サービスの呼び出し、およびfeignの適用に使用されます

  1. これを使用する場合は、pom.xmlに適切な依存関係を追加する必要があります。
  2. スタートアップメインクラス(OrderApplication)で@EnableFeignClientsに注釈を付けます。
  3. クライアントで呼び出されるサービスとインターフェース(ProductClient)を定義します。主に@FeignClientマッチングサービス@GetMappingマッチングメソッドを通じて製品サービスを呼び出すための製品詳細インターフェースproductMsg()を次に示します。
  4. クライアントにClientControllerを追加し、ProductClient依存関係を挿入して、ProductClientのgetProductMsg()を呼び出します。

5ab31d160001c00f19201080.jpg(1920×1080)

  • Feignは主にFeignクライアント+リボンです。Feignは実際には@FeignClientアノテーション付きインターフェースのserviceName +リボンを通じてターゲットサービスのIPとポートを取得し、@ FeignClientアノテーション付きインターフェースのメソッドのrequestMappingアノテーションに従って完全なリクエストを組み立てます。 URL、次にrestTemplateを使用してターゲットURLをリクエストします。
元の記事952件を公開 1820年に賞賛 89万回の閲覧

おすすめ

転載: blog.csdn.net/Dream_Weave/article/details/105440893