Feign可以把Restemplate进行封装,隐藏请求,简化代码,Feign里带Ribbon负载均衡
- todo
- 导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
- 编写接口,不需要实现类,接口上加一个FeignClient注解,标明这是一个feign客户端,用value属性指定服务名称,方法名把提供者的方法名复制过来就行
//声明这是一个feign客户端
@FeignClient(value = "user-service")
public interface UserClient {
@GetMapping("/user/{id}")
public User queryById(@PathVariable("id") Long id);
}
日志级别
配置类
- NONE:不记录任何日志信息,这是默认值。
- BASIC:仅记录请求的方法,URL以及响应状态码和执行时间
- HEADERS:在BASIC的基础上,额外记录了请求和响应的头信息
- FULL:记录所有请求和响应的明细,包括头信息、请求体、元数据。
@Configuration
public class FeignConfig {
@Bean
Logger.Level feignLoggerLevel(){
/*
* NONE: 无日志
BASIC:基础日志
HEADERS:基础日志+请求头
FULL:所有日志
*
* */
return Logger.Level.BASIC;
}
}
在FeignClient中指定配置类:
//configuration = FeignConfig.class指定配置类
@FeignClient(value = "user-service",configuration = FeignConfig.class)
feign抽取
创建模块,引入依赖,旧模块实体类,feign客户端类,配置类挪进新模块,旧模块引入新模块依赖,旧模块启动类上,用@EnableFeignClients(clients = UserClient.class)关联
@EnableFeignClients(clients = UserClient.class)