Feign是一个声明式WebService客户端。使用Feign能让编写Web Service客户端更加简单。它地使用方法是定义一个接口,然后再上面添加注解。同时也支持JAX-RS标准注解。Feign也支持可插拔式地编译器和解码器。Spring cloud对Feign进行了封装,使其支持SpringMVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。
Feign是一个声明式的Web服务客户端,使得编写web服务客户端变得非常容易,只需要创建一个接口,然后在上面添加注解即可。
官网:https://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign
https://github.com/OpenFeign/feign
Feign旨在使编写JavaHttp客户端变得容易
前面使用Ribbon+RestTemplate时,使用RestTemplate对http请求进行了封装处理,形成了一套模板化得调用方法让。但在实际开发中。由于对微服务依赖得调用可能不止一处。往往一个接口会被多处调用,所以通常都会针对每个微服务自行封装一些客户端类来包装这些依赖服务的调用。所以Feign在此基础上做了进一步的封装,由它来帮助我们定义和实现依赖服务接口的定义。在Feign的实现下,我们只需要创建一个接口并使用 注解的方式来配置它。即可完成对服务提供方接口的绑定。简化了使用Spring Cloud Ribbon时,自行封装服务调用客户端的开发量
SpringCloud整合Feign是在pringCloud Ribbon负载均衡的简单介绍和构建的基础上进行的。Feign是对RestTemplage做进一步的封装,所以其整合步骤分两步:1 )、在父项目中使用feign定义一个供外部调用的接口。 2)、模仿microserviceloud-comsumer-dept-80工程构建microserviceloud-comsumer-dept-feign工程。对父项目中的接口进行调用
约定:
EurekaServer指的是microserviceloud-eureka-7001~7003
Prover Server指的是microserviceloud-provider-dept-8001~8003
Consumer Server指的是microserviceloud-comsumer-dept-feign
3.1)、在父项目microserviceloud-api中使用feign定义一个供外部调用的接口
3.1.1、在pom.xml中引入相关依赖
org.springframework.cloud
spring-cloud-starter-feign
3.1.2、使用Feign定义一个提供服务的接口
@FeignClient(value="MICROSERVICECLOUD-DEPT")
public interface DeptClientService {
@RequestMapping(value = "/dept/add", method = RequestMethod.POST)
public boolean add(Dept dept);
@RequestMapping(value="/dept/get/{id}",method = RequestMethod.GET)
public Dept get(@PathVariable("id")long id);
@RequestMapping(value = "/dept/list",method = RequestMethod.GET)
public List list();
}
3.1.3、Maven clear
3.1.4、maven install
3.2)、模仿microserviceloud-comsumer-dept-80工程构建microserviceloud-comsumer-dept-feign工程。对对父项目中的接口进行调用
3.2.1、在pom.xml中引入Feign的相关依赖
org.springframework.cloud
spring-cloud-starter-feign
3.2.2、在主配置类上添加注解@EnableFeignClients
3.2.3、对父项目中的接口进行使用
3.3、测试。
开启Eureka Server、Provider Server、Consumer Server
访问:http://localhost/consumer/dept/get/2,
参考:周阳老师教学视频
https://www.cnblogs.com/crazymakercircle/p/11965726.html
https://www.jianshu.com/p/8c7b92b4396c
总结:跟着大牛不断学习