Feign抽取、OkHttp连接池

1 Feign抽取

1.1 分析

我们发现,如果每一个feign都有相关的针对单表的操作,那么每一个都写一个样的代码是不合理的而且是麻烦的,那么我们可以参考抽取controller一样的方式去抽取feign ,我们不搞那么复杂,因为feign只是接口声明,

子类继承接口即可。

如图,就是 每一个业务接口 继承 定义了抽取了通用的方法的接口 ,然后每一个业务接口如果是基本的CRUD,都不用进行声明了。直接调用即可。

1.2 代码实现抽取

创建核心feign接口

代码如下:

package com.mingye.core.feign;

import com.mingye.common.dto.PageRequestDto;
import com.mingye.common.vo.PageResultVo;
import com.mingye.common.vo.ResultVo;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.io.Serializable;
import java.util.List;

/**
 * @version 1.0
 * @description 标题
 * @package com.mingye.core.feign
 */
public interface CoreFeign<T> {

    @DeleteMapping("/del/{id}")
    ResultVo deleteById(@PathVariable(name = "id") Serializable id);
    /**
     * 添加记录
     *
     * @param record
     * @return
     */
    @PostMapping("/save")
    ResultVo<T> save(@RequestBody T record);

    //更新数据
    @PutMapping
    ResultVo updateByPrimaryKey(@RequestBody T record);

    @GetMapping("/{id}")
    ResultVo<T> findById(@PathVariable(name = "id") Serializable id) ;

    @GetMapping
    ResultVo<List<T>> findAll() ;

    /**
     * 根据等号条进行查询调用
     * @param record
     * @return
     */
    @PostMapping("/listCondition")
    ResultVo<List<T>> findByRecord(@RequestBody T record);

    /**
     * 通用条件分页查询
     *
     * @param pageRequestDto
     * @return
     */
    @PostMapping(value = "/list")
    PageResultVo<T> findByPage(@RequestBody PageRequestDto pageRequestDto) ;
}

添加依赖:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>

1.3 使用

给工程的pom文件添加core feign的依赖

修改Feign接口

再测试也是一样的效果,这样就不用重复编写了,

但是要注意的是:请求路径不能和父接口(coreFeign)中的一样。

2 使用OkHttp

​ 在使用默认的feign的时候,feign底层实际上是使用restTemplete 而restTemplate底层又使用到了httpclient,默认使用java自带的httpUrlConnection。我们是可以使用okhttp ,默认的feign调用httpUrlConnection每次都会创建一个链接对象。效率较低。所以使用okhttp来替换,它可以使用连接池。调用效率较高。

在工程中的pom.xml中添加依赖

<dependency>
    <groupId>io.github.openfeign</groupId>
    <artifactId>feign-okhttp</artifactId>
</dependency>

在需要用到feign的微服务中配置如下即可

feign:
  client:
    config:
      default: # default指定的是所有的 被调用方  都设置为该配置超时时间,可以设置为某一个微服务对应的服务名
        connectTimeout: 15000 # 链接超时时间
        readTimeout: 15000 # 读取的超时时间
        loggerLevel: HEADERS #日志级别
  okhttp:
    enabled: true
  httpclient:
    enabled: false
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Feign-OkHttp是一个依赖库,用于在Spring Boot项目中集成OkHttp。你可以通过在pom.xml文件中添加以下依赖来使用Feign-OkHttp: ```xml <dependency> <groupId>io.github.openfeign</groupId> <artifactId>feign-okhttp</artifactId> </dependency> ``` 在项目中引入Feign-OkHttp后,它会自动配置OkHttpClient并进行初始化。通过在application.yml文件中设置feign.okhttp.enabled=true来启用Feign-OkHttp自动配置。 在Feign-OkHttp中,连接池相关的参数如最大空闲连接数和连接最大空闲时间可以在application.yml文件中的feign.httpclient.max-connections和feign.httpclient.time-to-live属性中进行配置。 另外,连接超时的设置是通过application.yml文件中的feign.httpclient.connection-timeout属性进行配置。 需要注意的是,feign.httpclient.connection-timeout只对OkHttpClient的初始化阶段起作用。实际处理HTTP URL请求时,主要依据feign.Request.Options中的connectTimeoutMillis和readTimeoutMillis参数。如果feign.Request.Options中的connectTimeoutMillis和readTimeoutMillis与OkHttpClient实例中的不一致,则以feign.Request.Options中的参数为准。 这就是如何在Spring Boot项目中使用Feign-OkHttp集成OkHttp的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Spring Cloud Open Feign系列【4】集成OkHttp连接池配置详解](https://blog.csdn.net/qq_43437874/article/details/122169675)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Feign 如何使用 Okhttp 完成 HTTP URL 请求](https://blog.csdn.net/yangchao1125/article/details/104492547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值