上一篇文章,讲述了如何通过RestTemplate+Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务。
一、Feign简介
Feign是一个声明式的伪Http客户端,它使得写Http客户端变得更简单。使用Feign,只需要创建一个接口并注解。它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。Feign支持可插拔的编码器和解码器。Feign默认集成了Ribbon,了解springcloud架构可以加求求:三五三六二四七二五九,并和Eureka结合,默认实现了负载均衡的效果。
简而言之:
Feign 采用的是基于接口的注解
Feign 整合了ribbon,具有负载均衡的能力
整合了Hystrix,具有熔断的能力
二、准备工作
继续用上一节的工程, 启动eureka-server,端口为8761; 启动service-hi 两次,端口分别为8762 、8773.
三、创建一个feign的服务
新建一个spring-boot工程,取名为serice-feign,在它的pom文件引入Feign的起步依赖spring-cloud-starter-feign、Eureka的起步依赖spring-cloud-starter-netflix-eureka-client、Web的起步依赖spring-boot-starter-web,代码如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.forezp</groupId> <artifactId>service-feign</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>service-feign</name> <description>Demo project for Spring Boot</description> <parent> <groupId>com.forezp</groupId> <artifactId>sc-f-chapter3</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> </dependencies> </project>
在工程的配置文件application.yml文件,指定程序名为service-feign,端口号为8765,服务注册地址为http://localhost:8761/eureka/ ,代码如下:
eureka: client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: port: 8765 spring: application: name: service-feign
在程序的启动类ServiceFeignApplication ,加上@EnableFeignClients注解开启Feign的功能:
@SpringBootApplication @EnableEurekaClient @EnableDiscoveryClient @EnableFeignClients public class ServiceFeignApplication { public static void main(String[] args) { SpringApplication.run( ServiceFeignApplication.class, args ); } }
定义一个feign接口,通过@ FeignClient(“服务名”),来指定调用哪个服务。比如在代码中调用了service-hi服务的“/hi”接口,代码如下:
@FeignClient(value = "service-hi") public interface SchedualServiceHi { @RequestMapping(value = "/hi",method = RequestMethod.GET) String sayHiFromClientOne(@RequestParam(value = "name") String name); }
在Web层的controller层,对外暴露一个"/hi"的API接口,通过上面定义的Feign客户端SchedualServiceHi 来消费服务。代码如下:
@RestController public class HiController { //编译器报错,无视。 因为这个Bean是在程序启动的时候注入的,编译器感知不到,所以报错。 @Autowired SchedualServiceHi schedualServiceHi; @GetMapping(value = "/hi") public String sayHi(@RequestParam String name) { return schedualServiceHi.sayHiFromClientOne( name ); } }
启动程序,多次访问http://localhost:8765/hi?name=forezp,浏览器交替显示:
hi forezp,i am from port:8763
相关推荐
SpringCloud 是一个基于 Java 的微服务开发框架,用于简化分布式系统构建的一系列工具集合。它提供了包括服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群...
本文将深入探讨如何利用SpringCloud分布式微服务架构和微信小程序技术,构建一个高效、稳定且用户友好的短视频社交平台。我们将围绕核心的技术组件,如Eureka、Zuul、Hystrix、Config Server以及微信小程序API,进行...
Spring Cloud Finchley是Spring Cloud的一个重要版本,它提供了一套微服务开发的工具集,用于构建分布式系统,如服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式...
SpringCloud是基于Spring Boot实现的一套微服务框架,它提供了在分布式系统中常见的诸多功能,如服务发现、负载均衡、断路器、配置中心等。本项目“SpringCloud分布式开发基础工程”旨在帮助开发者理解并掌握Spring...
总之,Spring Cloud Feign为微服务架构中的服务消费者提供了优雅的调用方式,降低了开发复杂性,提高了代码的可读性和可维护性。通过合理的配置和使用,我们可以构建出高可用、高并发的分布式系统。
本文将深入探讨标题" Ideal版SpringCloud框架参考---分布式微服务架构参考"所涵盖的关键知识点,并结合描述中的组件进行详细解析。 首先,Eureka是Spring Cloud中的服务注册与发现组件。它允许微服务实例向中心...
在本教程中,我们将深入探讨如何使用Spring Cloud的2021.0.3版本,集成Nacos作为服务注册中心,并实现Feign客户端调用。Spring Cloud是一个强大的框架,用于构建分布式系统,如微服务架构,而Nacos是阿里巴巴开源的...
通过以上介绍,我们可以看出Spring Cloud为构建微服务架构提供了丰富的工具和组件,它简化了开发过程,同时也带来了复杂性的挑战。开发者需要理解每个组件的工作原理,并根据实际需求进行选型和配置,以实现高效、...
史上最简单的SpringCloud教程 | 第三篇: 服务消费者(Feign)(Finchley版本) 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)(Finchley版本) 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)...
SpringBlade是一个全面的、基于Spring Boot和Spring Cloud的分布式微服务架构,旨在提供一个高效、易用、功能丰富的开发平台。在这个v3.7.0版本中,它集成了许多现代开发工具和技术,帮助开发者快速构建复杂的企业级...
总结来说,基于SpringCloud和Docker的分布式微服务架构设计,不仅解决了传统单体架构的局限性,还通过微服务的高度解耦和容器化部署,极大提升了应用的灵活性和可维护性。这套架构设计为当前和未来应用架构的发展...
在本课程"SpringCloud微服务分布式架构开发实战-50000-05-作业及参考答案"中,我们将深入探讨SpringCloud这一强大的微服务框架,并通过具体的作业与参考答案来加深理解。SpringCloud是Java领域中广泛使用的微服务...
分布式微服务架构是一种现代软件开发方法,它将大型应用程序拆分为小型、独立的服务,每个服务都可以独立部署和扩展。在这个例子中,我们看到一个基于Spring Boot 2.x、Spring Cloud、Spring Data JPA、Consul、...
第三课: 服务消费者(Feign) 第四课: 断路器(Hystrix) 第五课: 路由网关(zuul) 第六课: 分布式配置中心(Spring Cloud Config) 第七课: 高可用的分布式配置中心(Spring Cloud Config) 第八课: 消息总线...
Feign的设计灵感来源于Netflix,其核心功能是作为服务消费者之间的代理,提供了一种接口化的调用方式,让服务调用如同调用本地方法一样简单。 在Spring Cloud体系中,微服务间的通信通常有多种方式,如Ribbon和...
在现代软件开发中,Spring Boot 和 Spring Cloud 的组合已经成为构建微服务架构的首选方案。本文将深入探讨这两个框架的集成应用,以及它们如何帮助开发者实现高效、可扩展的分布式系统。 Spring Boot 是一个基于 ...
- **开发流程**:在开发过程中,可以通过 SpringCloud 的各种子项目来快速搭建分布式系统的基本框架,如使用 Spring Cloud Config 进行配置管理,利用 Spring Cloud Netflix 实现服务间的调用和容错处理。...
通过学习和实践这个示例,你将深入理解Spring Cloud Feign的工作原理和使用方式,为构建微服务架构中的服务消费者打下坚实的基础。同时,也可以了解到如何与其他Spring Cloud组件(如Eureka)协同工作,提高系统的可...
在微服务架构中,Spring Cloud Alibaba 是一个强大的工具集,它提供了多种服务治理功能,如服务注册与发现、配置中心、熔断器等。本文将深入探讨如何在 Spring Cloud Alibaba 环境下,整合 Feign 实现服务间的 ...
在构建基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统时,开发者通常会采用一系列先进的技术来实现高效、可扩展且灵活的系统。这个系统不仅涉及到后端服务的开发,还涉及到前端用户界面的...