🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# OpenFeign简介 OpenFeign是一个声明式Restful网络请求客户端。会根据带有注解的函数信息构建网络请求的模板,在发送网络请求之前,OpenFeign会讲函数的参数值设置到请求模板中。使用OpenFeign的Spring应用架构分为三个部分,分别为服务注册中心、服务提供者和服务消费者。服务提供者向注册中心注册自己,然后消费者通过OpenFeign发送请求,OpenFeign会向服务注册中心获取服务提供者的信息,然后向提供者发送网络请求。 OpenFeign默认使用Ribbon提供的负载均衡。 ## 1.注册中心 OpenFeign配合Eureka等服务注册中心使用,Eureka为OpenFeign提供服务端信息的获取,比如服务的IP地址和端口。 ***** ## 2.服务提供者 服务端只需要提供对外的网络请求接口,同时确保服务在应用注册中心中注册即可。 ``` @RestController @RequestMapping("/server") public class FeignServerController{ @GetMapping("/instance/{serviceId}") public Instance getInstanceByServiceId(@PathVariable("serviceId") String serviceId){ return new Instance(serviceId); } } ``` 上述实现了API的接口,还需要将服务注册到eureka上,application.yml设置相关信息和名称,配置如下: ``` eureka: instance: instance-id: service1 client: service-url: default-zone: http://127.0.0.1:8761/eureka/ spring: application: name: feign-service server: port: 9000 ``` ***** ## 3.消费者 首先在pom文件添加eureka和openfeign的相关依赖,在入口添加@EnableFeignClients注解开启OpenFeign自动化装配。 ``` @SpringBootApplication @EnableFeignClients public class FeignClientApplication{ public static void main(String[] args){ SpringApplication.run(FeignClientApplication.class,args); } } ``` 接下来定义FeignClient接口,通过@FeignClient注解指定调用的远程服务名称,如下: ``` @FeignClient("feign-service") @RequestMapping("/server") public interface FeignClient{ @GetMapping() } ```