在这个例子中,我们将向您展示如何使用Feign客户端开发一个简单的Spring Boot Application,以使用Weather REST服务。
Spring Boot是基于Java的框架,可简化Web和企业应用程序的构建。 Spring Boot具有嵌入式Tomcat,提供“启动器”依赖关系,并且不需要配置XML。
Feign是由Netflix开发的用于实现REST API客户端的声明性框架。 Feign允许构建REST客户端来声明和注释接口,实际实现在运行时提供。
1.项目环境
此示例将使用以下工具实现:
- JDK 1.8.81
- IntelliJ 2018.2.2
- Spring Boot 2.0.4
- 摇篮4.10
- 春云Finchley.SR1
有了这些信息,让我们开始吧!
2.创建一个Spring Boot应用程序
单击文件->新建->项目
选择Spring Initializr并选择适当的JDK版本。
添加组和工件名称 。
选择Gradle Project,然后为您的项目输入一个版本 。
在下一个窗口中,选择以下选项:
- 核心-> DevTools
- 网页->网页
- 云->云引导
选择项目的位置,然后单击“ 完成”按钮。
和瞧!
您有一个Spring Boot应用程序。
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任务。
创建一个程序包和一个接口。
它将是我们的假客户。
我将其命名为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);}
}
最后,在控制器中使用伪客户端,然后再次运行该应用程序。
5.结论
此项解释了如何使用Feign构建一个声明性HTTP客户端以使用Weather API。 Feign的目标是降低与HTTP APIS统一绑定分母的复杂性,而不管其是否平静。
6.下载项目
您可以在此处下载此示例的完整源代码: Feign示例
翻译自: https://www.javacodegeeks.com/2018/10/making-rest-communication-easy-with-feign-clients.html