定制软件开发SpringCloud基于Feign的可编程式接口调用

文章目录


前言

Feign 可以替代 RestTemplate 定制软件开发完成可编程式接口调用,定制软件开发并且内部集成 Ribbon 定制软件开发实现了负载均衡


一、基本使用

1.引依赖

pom文件增加 依赖

<!-- feign --><dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

2.加注解

定制软件开发启动类上增加 @ 注解

@EnableFeignClients@SpringBootApplicationpublic class OrderApplication {    public static void main(String[] args) {        SpringApplication.run(OrderApplication.class, args);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.声明接口

创建client包,包下放使用到的接口

package com.cxstar.client;import com.alibaba.fastjson.JSONObject;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;@FeignClient("bookschina-service")@RequestMapping("/bookschina")public interface BookschinaClient {    @GetMapping("/spiderBookList/{searchkey}/{pageno}")    JSONObject searchBookschina(            @PathVariable("searchkey") String searchKey,            @PathVariable("pageno") Integer pageNo    );}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

直接把你需要调用的微服务里的controller类复制一份过来,修修改改就行了
ps:
1.@FeignClient(“bookschina-service”):访问 spring.application.name=bookschina-service 的微服务
2.@RequestMapping、@GetMapping、@PathVariable 用来映射地址,和controller中的用法一样
3.上面这个接口对应的就是 bookschina-service 微服务下映射地址为 /bookschina/spiderBookList/{searchkey}/{pageno} 的controller类方法


4.调用

测试类如下

package com.cxstar;import com.alibaba.fastjson.JSONObject;import com.cxstar.client.BookschinaClient;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;@Slf4j@SpringBootTestclass OrderApplicationTests {    @Autowired    private BookschinaClient bookschinaClient;    void booksChinaTest() {    		// 参数        String searchKey = "东野圭吾";        Integer pageNo = 1;		// 调用        JSONObject booksJB = bookschinaClient.searchBookschina(searchKey, pageNo);        log.info(booksJB.toString());    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

二、进阶

1.日志配置

application 文件中加入配置

feign:  client:    config:      default:                      # default 全局配置,局部配置的话可以换成请求的服务名称        loggerLevel: NONE			# 日志级别 NONE BASIC HEADERS FULL
  • 1
  • 2
  • 3
  • 4
  • 5

ps:
1.NONE:没有日志
2.BASIC:记录http请求发送目标、发送时间、返回时间、总耗时等信息
3.HEADERS:在 BASIC 基础上记录 请求头 和 响应头 信息
4.FULL:在 BASIC 和 HEADERS 的基础上记录 请求体 和 响应体 信息
5.上线后为了优化性能 日志级别尽量用 NONE 或者 BASIC


2.

Feign底层客户端默认实现是 URLConnection,不支持连接池,每次http请求都要三次握手,断开时四次挥手,有点浪费性能,可以用 Apache HttpClient 替代 URLConnection

<1>pom 引入依赖

<!-- feign 连接池 --><dependency>    <groupId>io.github.openfeign</groupId>    <artifactId>feign-httpclient</artifactId></dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

<2>application 文件中加入配置

feign:  httpclient:    enabled: true                   # 开启feign对 httpclient 的支持    max-connections: 200            # 最大连接数    max-connections-per-route: 50   # 每个请求接口的最大连接数
  • 1
  • 2
  • 3
  • 4
  • 5

ps:
1.max-connections 和 max-connections-per-route 的值需要根据具体情况设定

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发