一、Feign概述
(1)Feign是什么?
官网地址:https://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign
Feign是一个声明式的WebService客户端。使用Feign能让编写Web Service客户端更加简单,它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可插拔式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用支持负载均衡。
看完官网介绍以后,我整个人是懵逼的,官网总是来一些不像人话的描述,我的理解,简而言之,Feign是一个声明式的Web服务客户端,使用非常方便,只需要创建一个接口,然后添加注解即可完成使用,是不是很简单?
为什么要使用Feign呢?我的理解:目前大家都习惯面向接口编程,比如WebService接口,dao接口,jdbc等等,已经是大家的规范,在目前在项目中服务调用是通过服务名称来调用的,这样并没有满足面向接口,所以Feign的出现就是做到面向接口,使用也非常简单(接口+注解)。
(2)Feign能干什么?
Feign旨在使编写Java Http客户端变得更容易。前面练习比如:们只需创建一个接口并使用注解的方式来配置它(以前是Dao接口上面标注Mapper注解,现在是一个微服务接口上边标注一个Feign注解即可),即可完成对服务提供方的接口绑定,简化了使用Spring Cloud Ribbon时,自动封装服务调用客户端的开发量。
下面,我将我学习的小demo做笔记记录一下。参考地址:https://github.com/OpenFeign/feign
本项目地址:https://github.com/Simple-Coder/microservice-demo-study
二、Feign工程搭建
(1)Maven的工程结构图(本节操作这2个模块)
(2)microservice-consumer-feign添加pom依赖
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-ribbon</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <!--Feign相关--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> <dependency> <groupId>com.microservice</groupId> <artifactId>microservice-inf</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency> </dependencies>