目录
RestTemplate存在的问题 :
代码可读性差
参数复杂URL难以维护
Feign是声明式的http客户端
使用步骤 :
引入依赖
org.springframework.cloud spring-cloud-starter-openfeign
开启自动装配 在启动类上添加注解
@EnableFeignClients
创建接口声明
@FeignClient("userservice")
public interface UserClient {
@GetMapping("/user/{id}")
User findById(@PathVariable Long id);
}
order- controller中替换原来发请求的代码
@Autowired
private OrderMapper orderMapper;
// 注入feign接口
@Autowired
private UserClient userClient;
@GetMapping("{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
Order order = orderMapper.findById(orderId);
User user = userClient.findById(order.getUserId());
order.setUser(user);
return order;
}
修改日志级别 :
配置文件方式 :
全局生效 :
feign: client: config: default: # default就是全局配置 如果写服务名称就是针对某个微服务的配置 loggerLevel: FULL # 日志级别
只针对某个微服务生效
feign: client: config: userservice: # 只对userservice生效 loggerLevel: FULL # 日志级别
代码配置

主要包括 :
使用连接池代替默认的URLCollection
日志级别,最好用basic或none
连接池配置 ;
引入依赖 :
io.github.openfeign feign-httpclient
配置连接池 :
feign:
client:
config:
default: # default就是全局配置 如果写服务名称就是针对某个微服务的配置
loggerLevel: BASIC # 日志级别
httpclient:
enable: true # 支持HTTPClient的开关
max-connection: 200 # 最大连接数
max-connections-per-route: 50 # 单个路径的最大连接数
方式一 :

方式二 :

方式二的实现 :
新建feign-api模块 引入feign的stater的依赖
把order-service的 UserClient User实体类 FeignConfiguration配置类
复制到feign-api模块中
在order-service中引入feign-api模块的依赖
测试
