基本使用
一、默认使用resttemplate发起远程调用 restTemplate.getForObject(url,T.class)。
二、也可以自定义包装函数,方便调用者。
-1引入依赖
-2在application类上加上@EnableFeignClients
-3编写feign客户端
@FeignClient("xxxClient")
public interface UserClient{
@GetMapping("/xxx/{id}")
User findById(@PathVarable("id") Long id)
}
-4调用xxxclient.findById
Feign配置
feign.Logger.Level 日志级别
feign.codec.Decoder 响应结果的解析器
...
--配置文件添加feign.client.config.xxx.LoggerLevel xxx若为default代表全局,若为服务名称,则进队该服务生效
-- @EnableFeignClients(defaultConfiguration = DefaultFeignConfiguration.class) 代码全局
-- @FeignClient(“xxx服务”) 注解中的声明则代表某服务
Feign优化
日志尽量别用basic
--1.引入httpclient依赖
--2.feign.httpclient:enable:true
Feign实践
-1让Controller和FeignClient继承同一接口
-2将FeignClient、Pojo、Feign的默认配置都定义到一个项目中,供所有消费者使用。
-1.在父工程下创建一个module
-2.引入Feign依赖
-3.创建相关client 、config、pojo
-4.在需要用到Feign的模块中引入该module依赖
-5.当定义的Feignclient不在SpringBootApplication的扫描包范围时,这些FeignClient无法使用
- 指定FeignClient所在的包 @EnableFeignClients(basePackages=“xxxx”)
- 指定FeignClient字节码 @EnableFeignClients(clients={UserClient.class})