Feign是代替RestTemplate进行http请求的。
定义和使用 Feign 客户端:
1 引入依赖:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2. 在 order-service 的启动类添加注解开启 Feign 的功能:
3 编写 Feign 客户端:
4在orderservice中调用feign:
5 自定义feign的配置
Feign 的日志配置 :
- 方式一是配置文
件, feign.client.config.xxx.loggerLevel
①如果 xxx 是 default 则代表全局
②如果 xxx 是服务名称,例如 userservice 则代表某服务 - 方式二是 java 代码配置 Logger.Level 这个 Bean
①如果在 @EnableFeignClients 注解声明则代表全局
②如果在 @FeignClient 注解中声明则代表某服务
6 feign的性能优化:
Feign 的日志配置 :
- 方式一是配置文
件, feign.client.config.xxx.loggerLevel
①如果 xxx 是 default 则代表全局
②如果 xxx 是服务名称,例如 userservice 则代表某服务 - 方式二是 java 代码配置 Logger.Level 这个 Bean
①如果在 @EnableFeignClients 注解声明则代表全局
②如果在 @FeignClient 注解中声明则代表某服务
Feign 的性能优化 - 连接池配置:
引入依赖:
<!--httpClient的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
配置连接池:
7Feign 的最佳实践:
抽取FeignClient的步骤:
- 首先创建一个 module ,命名为 feign-api ,然后引入 feign 的 starter 依赖
- 将 order-service 中编写的 UserClient 、 User 、 DefaultFeignConfiguration 都复制到 feign-api 项目中
- 在 order-service 中引入 feign-api 的依赖
- 修改 order-service 中的所有与上述三个组件有关的 import 部分,改成导入 feign-api 中的包
- 重启测试