Spring Cloud ALibaba声明式Http客户端Feign

本文介绍了Spring Cloud Alibaba中Feign的使用,作为声明式HTTP客户端,Feign提高了微服务间通信的可读性和易维护性。内容包括如何引入依赖、定义接口、开启服务,以及Feign的细粒化配置如日志级别设置和性能优化措施,如启用HTTP连接池和调整日志级别。

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

前言

我们之前通过RestTemplate访问其它微服务时,虽然能够实现轻量级的微服务之间通讯,但写着写着发现很多的Url难以管理,代码可读性很差,开发维护也不是很友好。所以一种声明式的客户端Feign呼之欲出。
在这里插入图片描述

Feign

1.引入依赖

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

2.添加接口

@FeignClient(name = "user-center")
public interface UserCenterFeignClient {

    /**
     * http://user-center/users/{id}
     * @param id 用户 id
     * @return
     */
    @GetMapping("/users/{id}")
    UserDTO findById(@PathVariable Integer id);
}

3.开启访问

 ///UserDTO forObject = restTemplate.getForObject("http://user-center/user/{id}", UserDTO.class, share.getUserId());
 ///简化 可读 url管理
 UserDTO userDto = userCenterFeignClient.findById(share.getUserId());

Feign细粒化配置

1.代码方式设置日志级别

/**
 * feign 配置类
 * 这个类别加@Configuration注解 否则父子上下文重叠
 */

import feign.Logger;
import org.springframework.context.annotation.Bean;

public class GlobalFeignConfiguration {

    @Bean
    public Logger.Level level() {
        return Logger.Level.FULL;
    }

}

接口添加注解

@FeignClient(name = "user-center",configuration = GlobalFeignConfiguration.class)

2.属性配置日志级别

logging:
  level:
    com.**.api.service.IFeignService: DEBUG

Feign性能优化

目前默认Feign通过urlConnection来构建http请求,每次构建严重影响性能,可以通过以下几种方式来优化

  • 添加http连接池,可提升20%左右
  • 简化日志级别

1.引入依赖

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-httpclient</artifactId>
    <version>9.4.0</version>
</dependency>

2.配置

feign.httpclient.enabled=true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值