1. Feign的默认配置

  Feign 的默认配置 Spring Cloud Netflix 提供的默认实现类:FeignClientsConfiguration

  解码器:Decoder feignDecoder: ResponseEntityDecoder (which wraps a SpringDecoder)

  编码器:Encoder feignEncoder: SpringEncoder

  日志框架:Logger feignLogger: Slf4jLogger
  契约:Contract feignContract: SpringMvcContract
  生成器:Feign.Builder feignBuilder: HystrixFeign.Builder
  说明:

  解码器的作用:将 HTTP 响应数据反序列化为 Java 对象 
  编码器的作用:将方法签名中方法参数对象序列化为请求参数放到 HTTP 请求中

2. 自定义配置

  

import org.springframework.context.annotation.Bean;

import feign.Contract;
import feign.Logger; //@Configuration
public class RcFeignConfiguration {
@Bean
public Logger.Level feignLoggerLevel() {
return feign.Logger.Level.FULL;
} /*@Bean
public Contract feignContract() {
return new feign.Contract.Default();
}*/
}

配置@ FeignClient注解

  @FeignClient(value = "spring-cloud-provider", configuration = RcFeignConfiguration.class)

  说明:若配置文件被 SpringContext 扫描,则会被@ FeignClien 共用,会覆盖。

3. 日志配置

# 日志配置,默认是不打印任何的日志
logging.level.com.drunck.education.feign.IUserBiz=debug

需要在配置类里面添加以下代码:

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

  说明:四种级别 
  NONE:默认,不打印任何日志 
  BASIC:打印请求方法和 URL,和请求返回状态码和执行时间。 
  HEADERS:打印请求和返回的头部信息。 
  FULL:打印以上的全部信息。

4. 契约配置

  在配置类里面添加以下代码

@Bean
public Contract feignContract() {
return new feign.Contract.Default();
}

  修改 IuserBiz 类

@RequestLine("GET /api/user/{id}")
String view1(@Param(value = "id") int id);

5. 支持压缩

# 开启压缩
feign.compression.request.enabled=true
feign.compression.response.enabled=true
# 更多配置
feign.compression.request.mime-types=text/xml,application/xml,application/json
feign.compression.request.min-request-size=2048

6. URL属性

  

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; /**
* @author
*/
@FeignClient(value = "baidu", url = "www.baidu.com")
public interface IdrunckBiz {
@RequestMapping(value = "/{url}", method = RequestMethod.GET)
String get(@PathVariable(name = "url") String url); }

  说明:定义了 url 之后,vaule 为必选值,这时的 value 只是一个标识。

7. 支持继承

  1、定义一个普通接口

public interface UserService { 

@RequestMapping(method = RequestMethod.GET, value = "/api/user/find/{id}") 

User find(@PathVariable(value = "id") int id);
}

  2 、实现接口

import java.util.Date; 

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
/**
* @author*/
@RestController
public class FeignApiUserController implements UserService { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); @Override public User find(@PathVariable int id) { User user = new User(); user.setId(id); user.setName("张三"); user.setCreateTime(new Date()); logger.info("请求接口返回:{}", user); return user; }
}

  说明:springmvc 里面不支持方法参数映射的继承

  3、继承

  

public interface IUserBiz extends UserService{
// …
}

  

SpringCloud学习笔记(10)----Spring Cloud Netflix之声明式 REST客户端 -Feign的高级特性的更多相关文章

  1. SpringCloud学习笔记(9)----Spring Cloud Netflix之声明式 REST客户端 -Feign的使用

    1. 什么是Feign? Feign是一种声明式.模板化的HTTP客户端,在SpringCloud中使用Feign.可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到 ...

  2. 3.【Spring Cloud Alibaba】声明式HTTP客户端-Feign

    使用Feign实现远程HTTP调用 什么是Feign Feign是Netflix开源的声明式HTTP客户端 GitHub地址:https://github.com/openfeign/feign 实现 ...

  3. Spring 源码学习笔记10——Spring AOP

    Spring 源码学习笔记10--Spring AOP 参考书籍<Spring技术内幕>Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-a ...

  4. Spring Cloud 入门教程(六): 用声明式REST客户端Feign调用远端HTTP服务

    首先简单解释一下什么是声明式实现? 要做一件事, 需要知道三个要素,where, what, how.即在哪里( where)用什么办法(how)做什么(what).什么时候做(when)我们纳入ho ...

  5. spring cloud 声明式rest客户端feign调用远程http服务

    在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户端.Feign就是Spring Cloud提供的一种声明式R ...

  6. springCloud学习-消息总线(Spring Cloud Bus)

    1.简介 Spring Cloud Bus 将分布式的节点用轻量的消息代理连接起来.它可以用于广播配置文件的更改或者服务之间的通讯,也可以用于监控.本文要讲述的是用Spring Cloud Bus实现 ...

  7. Spring Cloud(三):声明式调用

    声明式服务调用 前面在使用spring cloud时,通常都会利用它对RestTemplate的请求拦截来实现对依赖服务的接口调用,RestTemplate实现了对http的请求封装处理,形成了一套模 ...

  8. Spring Cloud探路(三)REST 客户端Feign

    Declarative REST Client: Feign Feign is a declarative web service client. It makes writing web servi ...

  9. Spring4.0学习笔记(10) —— Spring AOP

    个人理解: Spring AOP 与Struts 的 Interceptor 拦截器 有着一样的实现原理,即通过动态代理的方式,将目标对象与执行对象结合起来,降低代码之间的耦合度,主要运用了Proxy ...

随机推荐

  1. vue 2.x axios 封装的get 和post方法

    import axios from 'axios' import qs from 'qs' export class HttpService { Get(url, data) { return new ...

  2. Run-time type information--RTTI

    In computer programming, run-time type information or run-time type identification (RTTI)[1] refers ...

  3. Unity局部坐标系与世界坐标系的区别

    局部坐标旋转是指以父物体为参考,进行旋转. 而世界坐标系以"坐标陀螺"来进行旋转. 类似的情况例如: 东.南.西.北.是世界坐标系. 前.后.左.右是局部坐标系

  4. 这个夏天有你,有CorelDRAW X7,有理想,有设计!

    CorelDRAW是加拿大Corel公司出品的一款功能全面的矢量绘图.平面设计软件,兼有图形设计的简易操作性和图像编辑的强大功能.目前,被广泛应用于广告宣传.艺术作品.纺织业等各个行业.和Photos ...

  5. CDR X7 限时3折618年中大促,是时候出手了!

    力量与激情.胜利与喜悦,这些自带饱满情绪的词,即将“刷屏”这个夏天!32支球队,28个不眠夜,你将与谁度过? 一场视觉上的饕餮盛宴即将开始! 小编也是个疯狂足球迷,虽然中国队无缘今年的俄罗斯世界杯,但 ...

  6. TF基础4

    模型的存储与加载 TF的API提供了两种方式来存储和加载模型: 1.生成检查点文件,扩展名.ckpt,通过在tf.train.Saver()对象上调用Saver.save()生成.包含权重和其他在程序 ...

  7. 在Windows环境下使用短信猫收发短信的简单配置:

    Windows简单配置: 1.插入usb接口,打开电脑的设备管理器,装驱动后,查看端口下设备的com(串口)是多少,接下来就是配置短信猫的必须参数: 如果短信猫是COM(串口)口的,一般端口是COM1 ...

  8. 密信(Mesince)首创全自动邮件加密,颠覆传统邮件加密软件

    电子邮件泄密已经成为一个全球性的日益严峻的安全问题,解决这个问题的唯一有效办法就是电子邮件内容先加密后发送.然而,使用基于S/MIME标准的传统邮件加密软件进行邮件加密,需要用户具备一定的技术基础.用 ...

  9. Docker-镜像的操作命令

    2.镜像在Ubuntu中的一些命令 (1)docker image ls 列出镜像 能够罗列出docker中所以的镜像所在的仓库.镜像标签.镜像ID.镜像的创建日期.镜像的大小等等信息. (2)doc ...

  10. 数据库常用sql语句积累

    组合一个新表 select p.*,(select value from as_info where key = 'v51_products') as v51_products from AP_POR ...