Fegin 是由NetFlix开发的声明式、模板化HTTP客户端,可用于SpringCloud 的服务调用。提供了一套更优雅、便捷的HTTP调用API,并且SpringCloud整合了Fegin、Eureka和Ribbon。使其使用更加简便。替换了之前使用RestTemplate进行硬编码方式的服务调用。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
在启动类上添加 @EnableFeignClients 开启
@SpringBootApplication
@EnableFeignClients
public class ServiceConsumerApplication {}
package cn.keats.service_consumer.feign;
import cn.keats.service_consumer.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import java.util.List;
/**
* @Author: keats_coder
* @Date: 2020/3/7
* @Version 1.0
*/
@FeignClient("SERVICE-PROVIDER")
public interface UserServiceFeignClient {
@GetMapping("/api/v1/user/{age}")
User getUser(@PathVariable("age") Integer age);
/**
* 用户列表
* @return
*/
@GetMapping("/api/v1/users")
List<User> getUsers();
}
在需要调用服务的地方使用 @AutoWired 注入该接口。调用其对应的方法
@Autowired
private UserServiceFeignClient userServiceFeignClient;
/**
* 基于 Feign 的优雅的接口调用方式
*/
@GetMapping("teacher/user/{age}")
public User getAllUser(@PathVariable Integer age){
return userServiceFeignClient.getUser(age);
}
Feign中已经集成了Ribbon的负载均衡功能,默认情况下使用轮询的规则,若想要自定义可以参考:Ribbon进行服务调用/负载均衡以及请求重试配置
新版本的Feign支持配置文件配置,常用的配置有日志级别的配置。开发环境下可以配置成最细腻级别的日志方便检查问题
# feign的配置
feign:
client:
config:
SERVICE-PROVIDER:
loggerLevel: FULL # NONE(默认选项), BASIC, HEADERS, FULL; 内容依次丰富、性能影响依次增大
logging:
level:
cn.keats.service_consumer.feign.UserServiceFeignClient: debug
public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
this.registerDefaultConfiguration(metadata, registry); // 注册配置
this.registerFeignClients(metadata, registry);// 注册Feign客户端
}
原文:https://www.cnblogs.com/keatsCoder/p/12435936.html