openFeign

一:java项目中实现调用的方式:

1.Httpclient
HttpClientApache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。HttpClient
相比传统 JDK 自带的 URLConnection,提升了易用性和灵活性,使客户端发送 HTTP 请求变得容易,提高了开发的效率。
2.Okhttp
一个处理网络请求的开源项目,是安卓端最火的轻量级框架,由 Square 公司贡献,用于替代HttpUrlConnectionApache HttpClientOkHttp 拥有简洁的 API、高效的性能,并支持多种协议(HTTP/2 和 SPDY)。
3.HttpURLConnection
HttpURLConnectionJava 的标准类,它继承自 URLConnection,可用于向指定网站发送GET 请求、POST 请求。HttpURLConnection 使用比较复杂,不像 HttpClient 那样容易使
用。
4.RestTemplate WebClient
RestTemplateSpring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程 HTTP 服务的方法,能够大大提高客户端的编写效率。

二:什么是feign
1.Feign是Netflix开发的声明式、模板化的HTTP客户端,可以帮助我们更加便捷的在服务与服务之间的调用;
Spring Cloud openfeign对Feign进行了增强,使其支持Spring MVC注解,另外还整合了Ribbon和Nacos,从而使得Feign的使用更加方便;

三:整合
1.pom.xml配置

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

2.加入feign接口,接口都是消费者端的,当然提供者也可以作为消费者
openFeign_第1张图片
3.启动类加入注解
openFeign_第2张图片
4.使用
openFeign_第3张图片
日志配置:
1.自定义日志配置
openFeign_第4张图片

 1.若此处使用了@Configuration 表示全局生效
 2.若想单独使用,不需要全局,那么就不要指定这个注解
 
  3.通过源码可以看到日志等级有 4 种,分别是:
  1:NONE【性能最佳,适用于生产】:不记录任何日志(默认值)。
  2:BASIC【适用于生产环境追踪问题】:仅记录请求方法、URL、响应状态代码以及执行时间。
  3:HEADERS:记录BASIC级别的基础上,记录请求和响应的header。
  4:FULL【比较适用于开发及测试环境定位问题】:记录请求和响应的header、body和元数据。

局部生效配置:
openFeign_第5张图片
yml配置:
openFeign_第6张图片
feign的超时配置:
自定义的和上方日志配置一样的配置方法
openFeign_第7张图片
yml:
openFeign_第8张图片
feign的自定义拦截器配置:
openFeign_第9张图片
配置类:
openFeign_第10张图片
yml:
openFeign_第11张图片
契约配置:
Spring Cloud 在 Feign 的基础上做了扩展,使用 Spring MVC 的注解来完成Feign的功能。原生的 Feign 是不支持 Spring MVC 注解的,如果你想在 Spring Cloud 中使用原生的注解方式来定义客户端也是可以的,通过配置契约来改变这个配置,Spring Cloud 中默认的是 SpringMvcContract。
openFeign_第12张图片
openFeign_第13张图片
yml配置契约:
openFeign_第14张图片
源码待更新:

你可能感兴趣的:(java)