# 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()
}
```