声明式服务调用客户端Feign

本文介绍了如何利用Feign和Eureka在SpringCloud中实现声明式的Web服务客户端调用,简化服务间的交互。首先,通过在调用方服务的pom.xml中引入spring-cloud-starter-feign依赖并启用Feign和EurekaClient。接着,配置application.yml文件,设置服务注册地址等信息。然后,创建Feign客户端接口,最后进行测试运行。Feign的特点包括支持注解、可插拔的编码器和解码器、Hystrix回退以及Ribbon的负载均衡。总结来说,Feign提供了一种更简洁的方式来隐藏REST请求,使服务调用如同本地调用般简单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Feign是一个声明式的服务Web服务客户端,使得编写Web服务客户端更加容易。SpringCloud使用Feign,Ribbon和Eureka可实现负载均衡。

声明式Web服务客户端Feign


一、启用Feign

在调用方服务的 pom 文件中增加 spring-cloud-starter-feign 依赖并声明启用 Feign 客户端。比如我们是 web-app-service 调用 sms-service 的接口,我们需要在 web-app-service 服务中增加依赖并声明启用Feign。

Feign具有如下特性:

  1. 可插拔的注解支持,包括Feign注解和JAX-RS注解;
  2. 支持可插拔的HTTP编码器和解码器;
  3. 支持Hystrix和它的Fallback;
  4. 支持Ribbon的负载均衡;
  5. 支持HTTP请求和响应的压缩。
    在这里插入图片描述
    基本流程:
    1 搭建Eureka Server
    2 创建服务提供者
    3 创建Feign客户端
    4 测试运行

pom.xml文件

使用Spring Initializr方式创建一个名称为eureka-feign-client的Spring Boot项目,这里将Group命名为com.itheima,将Artifact命名为eureka-feign-client,添加Eureka Client、Feign.Web、Test依赖。

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

EurekaFeignClientApplication.java文件

在启动类EurekaFeignClientApplication中添加EnableEurekaClient注解开启Eureka Client功能,再添加@EnableFeignClients注解开启Feign Client功能。

package com.itheima;

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

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class EurekaFeignClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaFeignClientApplication.class, args);

    }
}

application.yml文件

引入依赖后,在全局配置文件application.yml进行相关配置,包括配置程序名称、端口号,服务注册地址等。

spring:
  application:
    name: eureka-feign-client
server:
  port: 8764
eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:7000/eureka/

总结

Feign可以把Rest的请求进行隐藏,伪装成类似SpringMVC的Controller一样。你不用再自己拼接url,拼接参数等等操作,一切都交给Feign去做。

Feign和Ribbon是SpringCloud的Netflix中提供的两个实现软负载均衡的组件,Ribbon和Feign都是用于调用其他服务的,方式不同。Feign则是在Ribbon的基础上进行了一次改进,采用接口的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值