博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
spring-cloud-feign的简单使用
阅读量:3914 次
发布时间:2019-05-23

本文共 3633 字,大约阅读时间需要 12 分钟。

一、feign简介

Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,并和Eureka结合,默认实现了负载均衡的效果。

  • Feign 采用的是基于接口的注解
  • Feign 整合了ribbon

二、准备工作

继续用上一节的工程, 启动eureka-server,端口为8761; 启动service-client 两次,端口分别为8762 、8773.

三、创建一个feign的服务

新建一个spring-boot工程,取名为serice-feign,在它的pom文件引入Feign的起步依赖spring-cloud-starter-feign、Eureka的起步依赖spring-cloud-starter-eureka、Web的起步依赖spring-boot-starter-web,pom.xml文件如下:

4.0.0
org.springframework.boot
spring-boot-starter-parent
2.3.2.RELEASE
com.itinfo.service-feign
service-feign
0.0.1-SNAPSHOT
service-feign
Demo project for Spring Boot
1.8
Hoxton.SR6
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.cloud
spring-cloud-starter-openfeign
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-maven-plugin

在工程的配置文件application.yaml文件,指定程序名为service-feign,端口号为8765,服务注册地址为http://localhost:8761/eureka/ ,代码如下:

eureka:  client:    service-url:      defaultZone: http://localhost:8761/eureka/server:  port: 8765spring:  application:    name: service-feign

在程序的启动类ServiceFeignApplication ,加上@EnableFeignClients注解开启Feign的功能:

@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class ServiceFeignApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceFeignApplication.class, args); }}

定义一个feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务。比如在代码中调用了service-client服务的“/hello”接口,代码如下:

@FeignClient(value = "service-hello")public interface SchedualServiceHello {
@RequestMapping(value = "/hello",method = RequestMethod.GET) String sayHelloFromClientOne(@RequestParam(value = "name")String name);}

在Web层的controller层,对外暴露一个”/hello”的API接口,通过上面定义的Feign客户端SchedualServiceHello 来消费服务。代码如下:

@RestControllerpublic class HelloController {
@Autowired SchedualServiceHello schedualServiceHello; @RequestMapping(value = "/hello",method = RequestMethod.GET) public String sayHello(@RequestParam String name){
return schedualServiceHello.sayHelloFromClientOne(name); }}

启动程序,多次访问http://localhost:8765/hello?name=二哈,浏览器交替显示:

  • hello二哈I am from port :8762
  • hello二哈I am from port :8763

转载地址:http://dwjrn.baihongyu.com/

你可能感兴趣的文章
WPF 消息框 TextBox 绑定新数据时让光标和滚动条跳到最下面
查看>>
【BCVP】实现基于 Redis 的消息队列
查看>>
网络安全逐渐成为程序员的必备技能
查看>>
在Docker中配置ASP.NETCore的HTTPS模式
查看>>
统信发布UOS V20 进军个人市场 生态日益完善
查看>>
【追加功能】OFFICE插件管理工具重整后再上路,更好用易用。
查看>>
Confluent官博:Kafka最牛队列,性能15倍于RabbitMQ!
查看>>
使用SWAGGER和ASP.NET CORE设置可选路由参数
查看>>
C#刷剑指Offer | 二叉搜索树的后序遍历序列
查看>>
新版 C# 高效率编程指南
查看>>
跟我一起学.NetCore之文件系统应用及核心浅析
查看>>
初识ABP vNext(11):聚合根、仓储、领域服务、应用服务、Blob储存
查看>>
chrome禁止三方cookie,网站登录不了怎么办
查看>>
Git 图形化操作之合并提交记录
查看>>
Istio Pilot 源码分析(二)
查看>>
BeetleX框架详解-小结
查看>>
打造钉钉事件分发平台之钉钉审批等事件处理
查看>>
2020 中国开源年会(COSCon'20)再启程:开源向善(Open Source for Good)
查看>>
拥抱.NET 5,从自研微服务框架开始
查看>>
开源特训营 - Lesson 4 - 如何运营社区
查看>>