本文翻译:吴嘉俊,叩丁狼高级讲师。

在本文中,我们会快速的使用Springboot,配合Feign搭建一个简单的REST客户端应用。通过本示例,让大家对这两个框架的配合有一个基本的了解。

Spring Boot 是一个Java的快速开发框架,用于简化web和企业级应用开发。Spring boot内置tomcat服务器,提供了大量的starter配置,实现多种组件的自动装配。

Feign 是Netflix提供的一个实现了REST API 客户端的声明式开发框架。Feign允许使用标签注解接口达到声明式的创建REST客户端,具体的实现在运行时提供。

项目环境

准备好以下的工具:

  1. JDK 1.8.81
  2. IntelliJ 2018.2.2
  3. Spring Boot 2.0.4
  4. Gradle 4.10
  5. Spring Cloud Finchley.SR1

创建一个Springboot应用

在IDEA中File->new->Project:

选择Spring Initializr,并选择一个合适的JDK版本:

指定一个Group和Artiface名字。选择Gradle Project并且输入一个项目的版本。

在接下来的窗口中选择:

  • Core -> DevTools
  • Web -> Web
  • Cloud -> Cloud Bootstrap

最后一步中,为项目选择一个保存地址:

到此为止,我们已经成功创建了一个springboot的基础项目。

编写Controller

创建一个名叫FeignController的类。将类标记为Controller,并且实现一个返回ResponseEntity的方法,方法标记为接受Get请求。在这个版本中,我们的IWeatherClient返回一个虚拟的数据。

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

启动应用,访问请求地址:

创建Feign客户端实现

接下来,我们将上文中虚假的IWeatherClient替换为真实的服务内容。

在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')

运行Gradle的build任务;

创建一个Feign Client接口,我们命名为IWeatherClient:

在我们的接口中添加一个获取天气的方法,并使用@FeignClient注解将我们的接口创建为一个FeignClient。@FeignClient注解需要目标服务的名字和URL。在这里,我选择data这个名字,并且通过参数传入对应的URL。

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

添加一个接口的实现。如果在执行该服务的时候出现错误,我们需要回退(fallback),在示例中,我们不处理任何异常,所以返回一个null。

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

在application.properties文件中添加具体的远端服务地址:

feign.client.url = https://samples.openweathermap.org/data/2.5/weather?lat=35&lon=139&appid=b6907d289e10d714a6e88b30761fae22

我们访问一下这个url地址,以下就是这个服务返回的响应:

{"coord":{"lon":139.01,"lat":35.02},"weather":[{"id":800,"main":"Clear","description":"clear sky","icon":"01n"}],"base":"stations","main":{"temp":285.514,"pressure":1013.75,"humidity":100,"temp_min":285.514,"temp_max":285.514,"sea_level":1023.22,"grnd_level":1013.75},"wind":{"speed":5.52,"deg":311},"clouds":{"all":0},"dt":1485792967,"sys":{"message":0.0025,"country":"JP","sunrise":1485726240,"sunset":1485763863},"id":1907296,"name":"Tawarano","cod":200}

接下来,修改我们的FeignApplication类。在FeignApplication类上添加@EnableFeignClients注解,要求FeignClient扫描指定的包含FeignClient服务的包:

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);}
}

再次启动应用,请求/weather,我们就能得到远端服务的内容了:

这个小例子清楚的展示了如何通过Feign创建一个Weather API的HTTP客户端。Feign的核心在于降低基于RESTful 的HTTP API客户端的开发复杂度。

原文:https://www.javacodegeeks.com/2018/10/making-rest-communication-easy-with-feign-clients.html

使用Springboot+Feign Clients快速搭建REST客户端应用相关推荐

  1. SpringBoot脚手架工程快速搭建

    1.说明 本文汇总了搭建Spring Boot工程的文章, 可以用于快速搭建一个新的Spring Boot工程. 包括最开始的PowerDesigner数据库设计工具使用, 导出对应数据库的DDL脚本 ...

  2. 使用SpringBoot一小时快速搭建一个简单后台管理(增删改查)(超详细教程)

    最近也是临近期末了,各种的期末大作业,后台管理也是很多地方需要用到的,为了方便大家能快速上手,快速搭建一个简单的后台管理,我花了两天时间整理了一下 我会从0开始介绍,从数据库的设计到前端页面的引入最后 ...

  3. 使用SpringBoot一小时快速搭建一个简单后台管理(后端篇)

    不好意思让大家久等啦,最近也是因为学期末了,事情多了一点,所以更新的比较慢,请大家谅解下~ 好了话不多说,进入今天的教程环节 本次案例一共两篇文章教学: (第一篇):数据表设计,前端框架引入和编写前端 ...

  4. 2021年了还有做某某管理系统的?springboot整合mysql快速搭建XX管理系统

    XX管理系统 摘要 1 技术选型 1.1 Mysql8 1.2 springboot2 1.3 模板引擎thymeleaf 2 项目构建 2.1 创建项目 2.2 建表 3 项目实现 3.1 项目效果 ...

  5. 一步步学习SpringBoot(一) 快速搭建一个web

    适应读者 前端工程师(java系的公司) 前端架构师(java系的公司) java工程师 测试工程师(java系的公司) 什么是SpringBoot? Spring Boot便是一个社区反馈推动的项目 ...

  6. springboot微服务架构——搭建入门

    springboot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.SpringBoot是伴随着Spring4.0诞生的 ...

  7. Springboot+Netty搭建UDP客户端

    使用Netty+SpringBoot方式可以快速地开发一套基于UDP协议的服务端程序,同样的也可以开发客户端,一般使用UDP都是使用原生的方式,发送消息后就不管不问,也就是不需要确定消息是否收到,这里 ...

  8. Spring-Boot快速搭建web项目详细总结

    最近在学习Spring Boot 相关的技术,刚接触就有种相见恨晚的感觉,因为用spring boot进行项目的搭建是在太方便了,我们往往只需要很简单的几步,便可完成一个spring MVC项目的搭建 ...

  9. SpringBoot(一)_快速实战搭建项目

    现在在学习springboot 相关的知识,感觉真的很好用,用idea 进行开发,根据慕课网和纯洁的微笑的课程.进行总结下. 使用idea创建springboot项目 (1)单击 File | New ...

  10. 快速搭建Springboot项目的两种方式!!

    大家好,我是雄雄,欢迎关注微信公众号[雄雄的小课堂]. 前言 Springboot的特点就是简单.快速和方便,使用idea不到一分钟就可以快速搭建springboot项目,并且,在这里,你不用写spr ...

最新文章

  1. java基础学习总结——对象转型
  2. BUUCTF-Reverse:reverse1
  3. OpenJudge NOI 1.8 17:最好的草
  4. 单点登录的原理与简单实现
  5. oracle insert 触发器无效_分享一个超实用的Zabbix监控Oracle用户无效对象手册
  6. IIS 6.0 SSL证书安装
  7. 正则匹配获取中括号中的内容
  8. 妙趣横生的算法(C语言实现 第2版)pdf
  9. 投资学翻译及感悟 Lazy Prices
  10. 屏幕距离和坐便转换工具_简单好用的视频分辨率转换器推荐
  11. SpringBoot 整合 kaptcha + redis 实现 图形验证码登录
  12. 银行卡收单之网络传输加密
  13. linux pptpd无法访问内网,Linux系统中Starting pptpd无法运行的解决办法
  14. Unity 2D光照(2D Light)和阴影(Shadow Caster 2D)
  15. 我新开的淘宝店铺怎么增加访客和销量
  16. 仓库管理系统-新名词(经济订货批量 、订货周期、订货提前期)
  17. psid mysql_浅识MySQL
  18. 如何实现用户id生成一个唯一邀请码
  19. VisionFive2 星光板,开发之旅-1
  20. 【天光学术】研究生“憋论文”实况:别问,问就是在写论文

热门文章

  1. win8系统用友U8服务器的设置,用友u8服务器参数配置
  2. python安装失败0x80070005_win10系统运行提示0x80070005错误的解决办法
  3. 应用商店提示0x80070005错误
  4. winXP系统( 联想)台式电脑自动开机、关机图文详细解(三)
  5. c语言转换字符类型,C语言基础之数据类型转换
  6. 技术博客|第13期:Server Side Logging:Hulu推荐系统中的特征漂移问题解决方法
  7. 计算机专业选择加州的哪些大学留学,学计算机科学专业,必选硅谷附近的加州大学!...
  8. 科学计数法(PAT)
  9. 为什么对方的QQ邮箱收不到我QQ邮箱发的邮件?
  10. 用分数表示循环小数(C#版)