千家信息网

SpringCloud中如何使用Feign调用服务接口

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关SpringCloud中如何使用Feign调用服务接口,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JAVA
千家信息网最后更新 2026年11月02日SpringCloud中如何使用Feign调用服务接口

本篇文章给大家分享的是有关SpringCloud中如何使用Feign调用服务接口,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

JAVA 项目中接口调用怎么做?

1)Httpclient

HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 Http 协议的客户端编程工具包,并且它支持 HTTP 协议最新版本和建议。

HttpClient 相比传统 JDK 自带的 URLConnection,提升了易用性和灵活性,使客户端发送 HTTP 请求变得容易,提高了开发的效率。

2)Okhttp

一个处理网络请求的开源项目,是安卓端最火的轻量级框架,由 Square 公司贡献,用于替代 HttpUrlConnection 和 Apache HttpClient。OkHttp 拥有简洁的 API、高效的性能,并支持多种协议(HTTP/2 和 SPDY)。

3)HttpURLConnection

HttpURLConnection 是 Java 的标准类,它继承自 URLConnection,可用于向指定网站发送 GET 请求、POST 请求。HttpURLConnection 使用比较复杂,不像 HttpClient 那样容易使用。

4)RestTemplate

RestTemplate 是 Spring 提供的用于访问 Rest 服务的客户端,RestTemplate 提供了多种便捷访问远程 HTTP 服务的方法,能够大大提高客户端的编写效率。

上面介绍的是最常见的几种调用接口的方法,我们下面要介绍的方法比上面的更简单、方便,它就是 Feign。

Feign 是一个声明式的 REST 客户端,它能让 REST 调用更加简单。Feign 供了 HTTP 请求的模板,通过编写简单的接口和插入注解,就可以定义好 HTTP 请求的参数、格式、地址等信息。

而 Feign 则会完全代理 HTTP 请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。

Spring Cloud 对 Feign 进行了封装,使其支持 SpringMVC 标准注解和 HttpMessageConverters。Feign 可以与 Eureka 和 Ribbon 组合使用以支持负载均衡。

在Spring Cloud中集成Feign

在 Spring Cloud 中集成 Feign 的步骤相当简单,首先还是加入 Feign 的依赖,代码如下所示。

org.springframework.cloudspring-cloud-starter-openfeign

在启动类上加 @EnableFeignClients 注解,如果你的 Feign 接口定义跟你的启动类不在同一个包名下,还需要制定扫描的包名 @EnableFeignClients(basePackages="com.fangjia.api.client"),代码如下所示。

@SpringBootApplication@EnableDiscoveryClient@EnableFeignClients(basePackages = "com.fangjia.api.client")public class FshSubstitutionServiceApplication {public static void main(String[] args) {SpringApplication.run(FshSubstitutionServiceApplication.class, args);    }}

使用Feign调用接口

定义一个 Feign 的客户端,以接口形式存在,代码如下所示。

@FeignClient(value = "eureka-client-user-service")public interface UserRemoteClient {@GetMapping("/user/hello")String hello();}

首先我们来看接口上加的 @FeignClient 注解。这个注解标识当前是一个 Feign 的客户端,value 属性是对应的服务名称,也就是你需要调用哪个服务中的接口。

定义方法时直接复制接口的定义即可,当然还有另一种做法,就是将接口单独抽出来定义,然后在 Controller 中实现接口。

在调用的客户端中也实现了接口,从而达到接口共用的目的。我这里的做法是不共用的,即单独创建一个 API Client 的公共项目,基于约定的模式,每写一个接口就要对应写一个调用的 Client,后面打成公共的 jar,这样无论是哪个项目需要调用接口,只要引入公共的接口 SDK jar 即可,不用重新定义一遍了。

定义之后可以直接通过注入 UserRemoteClient 来调用,这对于开发人员来说就像调用本地方法一样。

接下来采用 Feign 来调用 /user/hello 接口,代码如下所示。

@Autowiredprivate UserRemoteClient userRemoteClient;@GetMapping("/callHello")public String callHello() {//return restTemplate.getForObject("http://localhost:8083/house/hello",String.class);//String result = restTemplate.getForObject("http://eureka-client-user-service/user/hello",String.class);String result = userRemoteClient.hello();    System.out.println("调用结果:" + result);return result;}

通过跟注释掉的代码相比可以发现,我们的调用方式变得越来越简单了,从最开始的指定地址,到后面通过 Eureka 中的服务名称来调用,再到现在直接通过定义接口来调用。

以上就是SpringCloud中如何使用Feign调用服务接口,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

接口 服务 客户 客户端 方法 代码 注解 支持 项目 就是 做法 名称 地址 多种 效率 更多 标准 知识 篇文章 中集 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海睿民互联网科技有限公司 互联网科技行业发展 金诺互联网科技 互联网科技战争 壕鑫互联网络科技 互联网科技公司有哪些 甘肃拓世互联网科技有限公司 互联网金融科技公司干啥的 湖南诚度互联网科技有限公司 宁夏众和广鑫互联网科技有限公司 成都铂石互联网科技做什么的 智腾互联网科技有限公司 赶超互联网科技 微信多开 新兴科技互联网创新大赛颁奖典礼 北京市互联网新科技 本届互联网大会上的黑科技 新氧科技和美国互联网有关系吗 互联网科技的前景 瑞安市蟠桃会互联网科技有限公司 互联网科技自媒体灵感 互联网巨头科技公司 互联网科技生活的内容 银川新华互联网科技职业技术培训学校图片 贵州叶脉互联网科技有限公司所属行业 荆州市昕露互联网络科技有限公司 深圳育鹏互联网科技有限公司招聘 科技互联网的核心竞争力 电子商务与互联网科技的关系 广州有谷有贝互联网科技有限公司 颐高云石互联网科技
0