1.OpenFeign介绍
GitHub - spring-cloud/spring-cloud-openfeign: Support for using OpenFeign in Spring Cloud apps
- OpenFeign是一个声明式WebService客户端,使用OpenFeign让编写Web Service客户端更加简单
- 它的使用方法是定义一个服务端口然后在上面添加注解
- OpenFeign也支持可插拔式的编码器和解码器
- SpringCloud对OpenFeign进行了封装使其支持SpringMVC标准注解和HttpMessageConverters消息转换器
- OpenFeign可以与Eureka和Ribbon组合使用以支持负载均衡
2.OpenFeign和Feign的区别
- Feign
- Feign是SpringCloud组件中的一个轻量级RESTful的Http服务客户端
- Feign内置了Ribbon,用来做客户端负载均衡,去调用服务注册中心的服务
- Feign的使用方法是:使用Feign的注解定义接口,调用服务注册中心的服务
- Feign支持的注解和用法请参考官方文档:OpenFeign/feign: Feign makes writing java http clients easier (github.com)
- Feign本身不支持SpringMVC注解,它有一套自己的注解
- Feign集成了Ribbon、RestTemplate实现了负载均衡的执行Http调用,只不过对原有的方式(Ribbon+RestTemplate)进行了封装,开发者不必手动使用RestTemplate调服务,而是定义一个接口,在这个接口中标注一个注解即可完成服务调用,这样更加符合面向接口编程的宗旨,简化了开发。
- OpenFeign
- OpenFeign是SpringCloud在Feign的基础上支持了SpringMVC的注解,如@RequestMapping等
- OpenFeign的@FeignClient可以解析SpringMVC的@RequestMapping注解下的接口
- OpenFeign通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务
- 一句话:OpenFeign就是在Feign的基础上做了加强
3.OpenFeign应用实例
需求分析:如下,将原来使用Ribbon+RestTemplate实现:获取服务+远程调用+负载均衡,替换为使用OpenFeign来实现
参考 member-service-consumer-80 创建 member-service-consumer-openfeign-80(步骤参考以前)
(1)创建新模块-member-service-consumer-openfeign-80
(2)修改 pom.xml:拷贝 member-service-consumer-80 的 pom.xml 依赖,并加入 openfeign-starter
<!-- 引入 openfeign --> |
|
<dependency> |
|
<groupId>org.springframework.cloud</groupId> |
|
<artifactId>spring-cloud-starter-openfeign</artifactId> |
|
</dependency> |
(3)创建application.yml
server: |