Spring Cloud 学习 - Nacos服务发现之Feign方式调用

绝地灬酷狼 2023-07-18 12:57 56阅读 0赞

Spring Cloud 学习 - Nacos服务发现之Feign方式调用

上一篇,我们介绍了 Spring Cloud 学习 - Nacos服务注册与发现 ,使用了RestTemplate进行简单调用,Ribbon作负载均衡。

RestTemplate调用看起来不够优雅,这一篇,我们来看一下Feign优雅调用方式。

主要版本

本文使用的相关技术主要依赖版本如下:
















Spring Cloud Spring Cloud Alibaba Spring Boot
Hoxton.SR3 2.2.0.RELEASE 2.2.5.RELEASE

好了,开始整合。

服务提供者,我们使用上一篇的spring-cloud-alibaba-provider服务,代码不做修改。详细请查看 Spring Cloud 学习 - Nacos服务注册与发现 。

主要依赖

添加openfeignnacos-discovery依赖,web提供对外接口

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>com.alibaba.cloud</groupId>
  7. <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>org.springframework.cloud</groupId>
  11. <artifactId>spring-cloud-starter-openfeign</artifactId>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-devtools</artifactId>
  16. <scope>runtime</scope>
  17. <optional>true</optional>
  18. </dependency>

添加配置

  1. server:
  2. port: 8080
  3. spring:
  4. application:
  5. name: cloud-alibaba-feign-consumer
  6. cloud:
  7. nacos:
  8. server-addr: localhost:8848

启用注解

  • @EnableFeignClients 启用FeignClient功能
  • @EnableDiscoveryClient 开启服务发现

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients
    public class AliFeignConsumerApplication {

    1. public static void main(String[] args) {
    2. SpringApplication.run(AliFeignConsumerApplication.class, args);
    3. }

    }

编写Client

@FeignClient("cloud-alibaba-provider"),value为调用的服务提供者名称,即服务提供者的${spring.application.name}的值。

这里要特别注意下:FeignClient里的@PathVariable("name")里的name不能省略默认,否则会报异常。这一点和Controller里不一致,Controller里的可以省略默认。

  1. @FeignClient("cloud-alibaba-provider")
  2. public interface HelloFeignClient {
  3. /** * Hello, ${name}! * @param name * @return */
  4. @GetMapping("/{name}")
  5. String hello(@PathVariable("name") String name);
  6. }

测试访问

启动Nacos

启动服务注册中心Nacos
在这里插入图片描述

启动服务提供者

启动2个服务提供者spring-cloud-alibaba-provider,端口分别为8081和8082:
多个启动可以在控制台指定端口进行启动,也可以在IDEA中复制启动配置,修改端口启动。

命令行启动方式如下:

  1. java -jar yourapp.jar --server.port=8080

启动服务消费者

启动服务消费者spring-cloud-alibaba-feign-consumer

访问测试

使用curl命令行调用结果:
GiJBGD.md.png

因个人能力有限,文中如有不足或错误之处,欢迎指正,感谢~~

发表评论

表情:
评论列表 (有 0 条评论,56人围观)

还没有评论,来说两句吧...

相关阅读