在这个例子中,我们将向您展示如何使用Feign客户端开发一个简单的Spring Boot Application,以使用Weather REST服务。

Spring Boot是基于Java的框架,可简化Web和企业应用程序的构建。 Spring Boot具有嵌入式Tomcat,提供“启动器”依赖关系,并且不需要配置XML。

Feign是由Netflix开发的用于实现REST API客户端的声明性框架。 Feign允许构建REST客户端来声明和注释接口,实际实现在运行时提供。

1.项目环境

此示例将使用以下工具实现:

  1. JDK 1.8.81
  2. IntelliJ 2018.2.2
  3. Spring Boot 2.0.4
  4. 摇篮4.10
  5. 春云Finchley.SR1

有了这些信息,让我们开始吧!

2.创建一个Spring Boot应用程序

单击文件->新建->项目

创建一个Spring Boot应用程序-步骤1

选择Spring Initializr并选择适当的JDK版本。

创建一个Spring Boot应用程序-步骤2

添加工件名称

选择Gradle Project,然后为您的项目输入一个版本

创建一个Spring Boot应用程序-步骤3

在下一个窗口中,选择以下选项:

  • 核心-> DevTools
  • 网页->网页
  • 云->云引导

创建一个Spring Boot应用程序-步骤4

选择项目的位置,然后单击“ 完成”按钮。

创建一个Spring Boot应用程序-步骤5

和瞧!

您有一个Spring Boot应用程序。

创建一个Spring Boot应用程序–步骤6

3.创建一个控制器并启动应用程序

创建一个名为FeignController类。 将Java类注释为Controller并实现GET方法,该方法返回带有伪数据的ResponseEntity 。 之后,我将使用真实信息来完成地图。

package com.example.feign.controller;@RestController
public class FeignController {private final IWeatherClient weatherClient;@Autowiredpublic FeignController(IWeatherClient weatherClient) {this.weatherClient = weatherClient;}@GetMapping(path = "/weather")ResponseEntity<Map> getWeather() {return ResponseEntity.ok(weatherClient.getWeather().getBody());}
}

使用用于部署应用程序的端口编辑文件application.properties。

server.port=9090

最后,运行并测试该应用程序的第一个版本。

测试应用

4.假冒客户实施

编辑build .gradle文件,并包括以下依赖项:

compile('org.springframework.boot:spring-boot-starter-web-services')
compile('org.springframework.cloud:spring-cloud-starter-openfeign')
compile('org.springframework.cloud:spring-cloud-starter-config')

记住运行build Gradle任务。

运行构建Gradle任务

创建一个程序包和一个接口。

它将是我们的假客户。

我将其命名为IWeatherClient

创建一个新的班级

将界面注释为FeignClient并添加一种获取天气的方法。

注释@FeignClient要求您包括服务的名称和URL。

在这种情况下,我选择了诸如name之类的数据,并为URL使用了一个属性。

package com.example.feign.feign;@FeignClient(name = "data", url = "${feign.client.url}")
public interface IWeatherClient {@RequestMapping(method = RequestMethod.GET)ResponseEntity<Map> getWeather();}

为接口添加一个实现。 如果在调用该服务时出现问题,这将是一个后备。 在这种情况下,我没有后备功能,因此我将返回null。

package com.example.feign.feign.imp;@Component
public class WeatherFallback implements IWeatherClient {@Overridepublic ResponseEntity<map> getWeather() {return null;}}
</map>

注释主类以启用Feign客户。 注释@EnableFeignClients要求您包括基本软件包。

package com.example.feign;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableFeignClients(basePackages = {"com.example.feign.feign","com.example.feign.controller"})
public class FeignApplication {public static void main(String[] args) {SpringApplication.run(FeignApplication.class, args);}
}

最后,在控制器中使用伪客户端,然后再次运行该应用程序。

创建Feign客户的结果

5.结论

此项解释了如何使用Feign构建一个声明性HTTP客户端以使用Weather API。 Feign的目标是降低与HTTP APIS统一绑定分母的复杂性,而不管其是否平静。

6.下载项目

下载
您可以在此处下载此示例的完整源代码: Feign示例

翻译自: https://www.javacodegeeks.com/2018/10/making-rest-communication-easy-with-feign-clients.html

轻松与外来客户进行REST通信相关推荐

  1. 怎么通过MQTT查看数据是否上云端_干货 | 设备快速上云,轻松搞定设备与云端通信...

    本文主要讲解如何使用京东云物联网引擎产品,快速创建产品及设备,并通过SDK将设备安全地连接至云端,实现设备的数据上报与订阅,让刚接触该产品的用户能够对京东云物联网平台有个初步的认识. 目前京东云 Io ...

  2. Netty中实现多客户端连接与通信-以实现聊天室群聊功能为例(附代码下载)

    场景 Netty的Socket编程详解-搭建服务端与客户端并进行数据传输: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1086 ...

  3. EventBus,轻松实现跨组件跨线程通信

    安卓基础开发库,让开发简单点. DevRing & Demo地址:github.com/LJYcoder/De- 学习/参考地址: http://blog.csdn.net/itachi85/ ...

  4. 专业应用软件随身带,一招助您轻松搞定客户

    电脑和电脑之间的价格差距从数千到数万不等,造成这种巨大差异的就是配置不同,一些专业的应用软件,如绘图软件.设计软件.视频剪辑软件等对电脑配置都是有要求的,公司为了工作的需要,都是配有专门的高配电脑. ...

  5. 轻松易懂arduino低功耗BLE蓝牙通信

    今天我们介绍蓝牙通信的另一种方式--BLE(Bluetooth Low Energy,蓝牙低功耗).         什么是BLE         在<无线通信3:HC05/HC06经典蓝牙BT ...

  6. C语言限制双开关不同为1,网络环境下不同客户之间通信的C语言编程方法(第1稿)...

    网络环境下不同客户之间相互通信的C语言编程方法 大多数网络应用系统可分成客户和服务器两部分,他们之间的通信可能涉及两种方式:服务器和客户之间的通信,客户和客户之间的通信.本文主要阐明了网络环境下不同客 ...

  7. 融合通信(中移动)----微信的强力竞争者来了----阿冬专栏!!!

    融合通信(中移动)----微信的强力竞争者来了 ----兴趣了解内容 面对微信的垄断地位,三家运营商对于微信等OTT服务的态度有着明显的区别.中国联通是主动合作,2013年8月,中国联通广东公司与微信 ...

  8. 电销CRM客户关系管理系统开发12大核心功能

    电销CRM管理系统软件是一款专门针对电销行业开发的客户关系管理软件,它能够帮助企业实现对顾客信息的可视化,智能化,自动化管理,提高电销效率和客户满意度.电销行业在传统互联网营销,新媒体营销,短视频营销 ...

  9. 云通信未来发展,技术革新是重点

    说到云通信,整个互联网圈都闪着期待的光.自云通信成为热门开始占据行业讨论话题前列起,围绕云通信的思考和讨论就从未止息. 确实,在移动互联网信息产量呈几何性爆发的大背景下,应用市场不断增长的APP,迅猛 ...

最新文章

  1. mysql查询各个知识点
  2. 建立循环双链表(尾插法)
  3. 未能添加对***.dll的引用 问题解决方法
  4. 使用 vue + thinkjs 开发博客程序记录
  5. EL中的param和params
  6. 数字三角形——递归、递推、记忆化搜索
  7. java reduce 分组_使用JAVA8 stream中三个参数的reduce方法对List进行分组统计
  8. vagrant特性——基于docker开发环境(docker和vagrant的结合)-2-命令
  9. JQuery学习系列(三)语法
  10. 7天快速掌握MySQL-DAY5
  11. java 线程意外中断重启处理办法(观察者模式)
  12. 小胜凭智, 大胜靠德
  13. 英语语法基础01(句子结构)
  14. 关于trycatchfinal返回值问题
  15. C#毕业设计——基于C#+asp.net+sqlserver的汽车修理厂物资流通管理系统设计与实现(毕业论文+程序源码)——物资流通管理系统
  16. 帝国时代3 怎样旋转建筑物
  17. Mac宝藏软件推荐(笔者也在用)(一)
  18. ROC曲线的含义以及画法
  19. 职业梦想是计算机的英语作文,我梦想的职业高中英语作文
  20. python和按键精灵自动化测试_按键精灵对APP自动化测试(上)

热门文章

  1. 数学推导题,NTT,快速数论变换,Wannafly-导数卷积
  2. 2-sat模板- 输出可行解
  3. 两张趣图助你理解 HTTP 状态码
  4. art-template入门(四)之调试
  5. JVM 调优和垃圾回收器说明
  6. Oracle入门(十四.1)之PL / SQL简介
  7. [初级]Java中的switch对整型、字符型、字符串的具体实现细节
  8. 多线程的线程通信(生产消费)
  9. mysql 行转列分级输出_MySQL如何实现行转列分级输出?_MySQL
  10. Intellij IDEA 重置所有工具栏 Intellij IDEA 中的 Debug 控制台输出窗口不见了的解决办法