美文网首页
Spring Cloud Feign - 声明式服务调用是什么

Spring Cloud Feign - 声明式服务调用是什么

作者: zbsong | 来源:发表于2020-03-25 14:20 被阅读0次

    Spring Cloud Feign 整合了Sping Cloud Hystrix和Spring Cloud Ribbon,还提供了一种声明式的Web服务客户端定义方式。我们只需要创建一个接口并用注解的方式来配置它,既可完成对服务提供的接口绑定。

    • 快速入门

    1.修改服务提供者,添加一个FeignController,用来实现feign调用方法

    @RestController
    @RequestMapping(value = "/feign")
    public class FeignController {
    
        @RequestMapping(value = "/test")
        public String testFeign() {
            return "Hello World";
        }
    
    }
    

    2.新建一个Spring Boot工程,命名为fegin-consumer(随意)
    3.编辑pom.xml文件,主要依赖内容如下:

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    

    4.修改application.yml文件

    server:
      port: 9000
    eureka:
      client:
        service-url:
          defaultZone: http://peer1:1111/eureka/
    spring:
      application:
        name: feign-consumer
    

    5.修改应用主类

    //开启 spring cloud feign功能
    @EnableFeignClients
    @EnableDiscoveryClient
    @SpringBootApplication
    public class FeginApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(FeginApplication.class, args);
        }
    
    }
    

    6.添加FeignService

    //使用@FeignClient注解指定服务名来绑定服务
    @FeignClient("HELLO-CLIENT")
    public interface FeignService {
    
        @RequestMapping(value = "/feign/test")
        String hello();
    
    }
    
    @FeignClient注解参数绑定的是服务名,绑定时,服务名不区分大小写 image.png

    7.添加FeignController

    @RestController
    @RequestMapping(value = "/feign")
    public class FeignController {
    
        @Autowired
        FeignService feignService;
    
        @GetMapping(value = "/test")
        public String feignConsumer() {
            System.out.println("服务提供方返回数据为:" + feignService.hello());
            return feignService.hello();
        }
    }
    
    查看消费者控制台打印日志,内容如下: image.png

    从结果中可以看到远程调用接口正常,实现了和使用Ribbon实现时一样的效果。

    通过Feign我们只需要定义服务绑定接口,以声明式的方法,优雅而简单地实现服务调用。

    相关文章

      网友评论

          本文标题:Spring Cloud Feign - 声明式服务调用是什么

          本文链接:https://www.haomeiwen.com/subject/avwtuhtx.html