SpringCloudAlibaba学习笔记:OpenFeign客户端

一、前言

OpenFeign 是一个 Web 声明式的 Http 客户端调用工具,提供接口和注解形式调用。
SpringCloud 第一代采用 feign 第二代采用 openfeign
openfeign 客户端作用:是一个 Web 声明式的 Http 客户端远程调用工具,底层是封装HttpClient 技术。
Openfeign 属于 SPringleCloud 自己研发,而 feign 是 netflix 代码写法几乎是没有任何变化。
注意 feign 客户端调用的事项:如果请求参数没有加上注解的话,默认采用 post 请求发送。
Openfeign 默认是支持负载均衡,ribbon。

二、示例

1.客户端

(1).maven依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

(2).service

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient(name = "alibaba-provider")
public interface FeignDemoService {

    //provider配置了路径server.servlet.context-path=/provider,所以要添加 provider
    @RequestMapping("/provider/demo")
    public String test();
    
}

(3).controller

import com.asyf.demo.feignservice.FeignDemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = "/")
public class DemoController {

    @Autowired
    private FeignDemoService feignDemoService;

    @RequestMapping(value = "/demo")
    public String test() {
        return "consumer:" + feignDemoService.test();
    }

}

2.服务端

服务端提供接口,并启动2个服务注册到nacos注册中心

(1).controller

@Value("${server.port}")
private Integer port;
    
@RequestMapping(value = "/demo", method = RequestMethod.GET)
public String test() {
    System.out.println(test.length());
    return "abc" + " - port:" + port;
}

3.启动服务端和客户端

4.测试

访问http://localhost:8090/consumer/demo

注意:

(1)接口是否通

(2)负载均衡是否好用

猜你喜欢

转载自blog.csdn.net/cs373616511/article/details/112438897
今日推荐