OpenFeign出现是为了解决什么问题,其实最直观的作用是自己的业务代码精简,面向接口编程。
例如,我们使用Ribbon+RestTemplate在服务的消费方会大量出现类似这样的代码:
restTemplate.getForObject(INVOKER_URL + "/.../...", CommonResponse.class);
写这么多的URL,是不是很繁琐。那怎么消除这些繁琐的重复代码,这个和MyBatis的Mapper接口思想类似,只定义接口。当然,OpenFeign本身集成Ribbon(客户端负载均衡),还有超时访问管理,和接口日志管理,,集成Hystrix断路器等。
1. OpenFeign 使用 demo
1.1 先引入依赖:
spring-cloud-starter-openfeign
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
1.2 修改application.yml
register-with-eureka: false
eureka:
client:
# 表示是否将自己注册进 EurekaServer, 默认true
register-with-eureka: false
# 是否从Eureka Server抓取自己的注册信息,默认true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
#fetch-registry: true
service-url:
# 注册中心地址
defaultZone: http://eureka7001.com:7001/eureka
1.3 创建main
@EnableFeignClients
@SpringBootApplication