没有之前那么多的理论了,先使用
使用
pom依赖
注解
在启动类上添加 @EnableFeginClients 注解
编写代码
当Fegin 的这个方法被调用时,会构建出 http://user-center/users/{id}这样的URL
我们的Ribbon 会根据 微服务的名称自动根据负载均衡算法,找到对应的微服务实例,进行访
问.
将返回的结果转换成 UserDTO.
使用
@Autowrited
private UserCenterFeginClient userCenterFeginClient
UserDTO userDto = userCenterFeginClient.findById(userId);
Fegin组成
细粒度配置
指定日志
代码配置
因为 Fegin 默认是不打印任何日志的. 所以我们需要进行配置
Fegin 定义了四种日志级别
@FeginClient(name="user-center",configuration= UserCenterFeginConfiguration.class)
public interface UserCenterFeginClient{
@GetMapping("/users/{id}")
UserDTO findById(@PathVariable Integer id);
}
其中 @FeginClient 中的 configuration 属性指定的 UserCenterFeginConfiguration.class.
我们要在其中编写 指定日志级别的代码
日志级别依旧是有实现类. 我们实现,使用@Bean注解.交给Spring进行管理. 即可``
public class UserCenterFeginConfiguration{
@Bean
public Logger.Level level(){
return Logger.Level.FULL;
}
}
yml配置
logging:
level:
cn.nctwo.UserCenterFeginConfiguration: debug
代码配置方式总结
我们使用代码配置日志级别. 需要配合 yml 配置. 而Java代码配置的日志级别. 是需要
等于 大于 yml 指定的日志级别之上的.
因为代码配置方式使用的是 Fegin 自己指定的日志级别. 而一般的日志级别是DEBUG,
INFO等级别. 是需要一个对照的
纯yml配置日志级别
首先,将 @FeginClient 中的 configuration 属性去掉. 不再指定 配置类
# fegin.client.config.<feginName>.loggerLevel: full
fegin.client.config.user-center.loggerLevel: full
全局配置
代码方式
俩种方式,第一种不推荐使用.
博主这里偷懒了.
只需要在启动类的 @EnableFeginClients 注解的 defaultConfiguration 属性指定
日志配置类即可.
而 defaultConfiguration 指定的日志配置类. 内部的代码就是我们之前写的那部分.
yml 全局配置
fegin:
client:
config:
# 全局配置,将服务名称改为 default即可
default:
loggerlevel: full
支持的配置项
代码
属性配置
最佳实践配置总结
对比
Fegin 继承
Fegin 的使用方式是, 编写 接口,内部方法的访问方式和方法签名一致. 在调用的时候,
Fegin自动去调用.
而 服务调用方 和 服务提供方 这部分的代码是一致的. 重复了. 那么我们可以抽离出来
放置在独立的模块内.
服务提供方的Controller 层,实现 抽离出来的接口.
服务调用方 Fegin 继承 抽离出来的接口.