`

【微服务架构】SpringCloud之Feign(五)

 
阅读更多

【微服务架构】SpringCloud之Feign(五)

Feign简介

Feign 是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbon 和 Eureka 提供的负载均衡的HTTP客户端 Feign.

声明式REST客户端:Feign

先要启动 eureka_register_service 工程(注册中心)和 biz-service-0 工程(服务生产者)

创建一个maven工程 eureka_feign_client

pom.xml

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-feign</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Brixton.SR5</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
    </dependencies>
</dependencyManagement>

在应用主类中通过 @EnableFeignClients 注解开启Feign功能

启动文件FeignApplication.java

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FeignApplication {

    public static void main(String[] args) {
        SpringApplication.run(FeignApplication.class, args);
    }

}

定义服务接口类UserClient.java

使用 @FeignClient("biz-service-0") 注解来绑定该接口对应biz-service-0服务

@FeignClient("biz-service-0")
public interface UserClient {

    @RequestMapping(method = RequestMethod.GET, value = "/getuser")
    public User getuserinfo();
    
    @RequestMapping(method = RequestMethod.GET, value = "/getuser")
    public String getuserinfostr();
    
    @RequestMapping(method = RequestMethod.GET, value = "/info")
    public  String  info();

}

在web层中调用上面定义的UserController,具体如下

@RestController
public class UserController {

    @Autowired
    UserClient userClient;

    @RequestMapping(value = "/getuserinfo", method = RequestMethod.GET)
    public User getuserinfo() {
        return userClient.getuserinfo();
    }
    
    @RequestMapping(value = "/getuserinfostr", method = RequestMethod.GET)
    public String getuserinfostr() {
        return userClient.getuserinfostr();
    }
    
    @RequestMapping(value = "/info", method = RequestMethod.GET)
    public String info() {
        return userClient.info();
    }


}

application.properties配置变量

spring.application.name=feign-consumer
server.port=8004
eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/

访问  http://127.0.0.1:8004/getuserinfo

总结:

其实通过Feign封装了HTTP调用服务方法,使得客户端像调用本地方法那样直接调用方法,类似Dubbo中暴露远程服务的方式,区别在于Dubbo是基于私有二进制协议,而Feign本质上还是个HTTP客户端

可能遇到的问题

启动抛出: Attribute 'value' in annotation [org.springframework.cloud.netflix.feign.FeignClient] must be declared as an @AliasFor [serviceId], not [name].

解决:把spring-cloud-dependencies version升级到Brixton.SR5(netflix-core版本升到1.1.1就好了)

代码地址: https://github.com/zhp8341/SpringCloudDemo

未完待续。。。

分享到:
评论

相关推荐

    微服务架构Spring Cloud视频教程.rar

    21.1微服务架构概述,avi 3.开始使用Spring Cloud实战微服务.avi 4服务提供者与服务消费者。avi 4服务提供者与服务消费者new,avi 4.1服务发现与服务注册.ai 4,2 Eureka简介与Eureka Server.上,ai 4.3将微服务...

    SpringCloud微服务分布式架构开发实战-50000-05-作业及参考答案.rar.rar

    总而言之,SpringCloud微服务分布式架构开发实战课程涵盖了微服务架构的关键技术,通过作业和参考答案,你可以加深对SpringCloud组件的理解,提升微服务应用的开发能力。在实践中不断学习,才能更好地应对复杂的...

    微服务 : SpringCloud + Nacos + Feign

    SpringCloud简化了在微服务架构中集成这些复杂功能的过程。 Nacos是阿里巴巴开源的项目,它作为SpringCloud生态中的服务发现和配置中心,提供了服务注册与发现、配置管理和动态配置等功能。在微服务架构中,Nacos...

    SpringCloud微服务架构笔记-共四部分四个PDF文件

    本套笔记全面覆盖了SpringCloud微服务架构的关键知识点,从理论到实践,帮助读者深入了解并掌握微服务设计原则和SpringCloud的实现方式,对于想要在微服务领域深化学习的Java开发者来说是一份宝贵的资料。

    【微服务架构】SpringCloud之断路器(hystrix)

    `SpringCloud-Feign`是Spring Cloud提供的另一种声明式服务调用客户端,它构建在 Ribbon 和 Hystrix 之上,简化了服务间的调用。Feign使得编写消费其他服务的客户端变得更简单,同时也内置了Hystrix断路器,以确保高...

    Spring Cloud Feign统一设置验证token实现方法解析

    在微服务架构中, token验证是非常重要的安全机制之一,本文将主要介绍如何使用Spring Cloud Feign统一设置验证token实现方法解析。 首先,我们需要了解Feign组件的工作机制。Feign组件是一个基于Annotation的接口...

    微服务-springCloud

    毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,...

    SpringCloud微服务架构Demo案例

    上传的这个microservicecloud工程的主要使用了SpringCloud的5大技术栈做了一个微服务架构案例,涉及到Eureka集群的配置、Ribbon的自定义负载均衡、Feign的声明式接口调用、Hystrix的服务熔断和降级、Zuul的Api ...

    传统架构到微服务SpringCloud.pptx

    单体架构vs微服务架构,dubbo与spring cloud对比,spring cloud整体架构,简单架构,eureka介绍,hystrix介绍, feign介绍,spring cloud config配置介绍,zuul配置中心介绍, spring cloud开发步骤,docker自动化...

    Spring Cloud微服务架构实战-视频教程网盘链接提取码下载 .txt

    本门课程围绕电商项目大觅网的业务场景,基于微服务原则设计电商项目,使用多种诸如Eureka、Feign、Hystrix、Ribbon、Zuul、Config等技术,另外基于虚拟化技术Docker+Jenkins实现程序自动发布、基于Mycat实现第三方...

    SpringCloud之Feign

    【SpringCloud之Feign】是Spring Cloud生态体系中一个重要的组件,主要用于服务间的调用,实现了声明式的服务调用,极大地简化了微服务之间的通信。Feign基于Netflix Hystrix进行了整合,支持服务熔断,提高了系统的...

    SpringCloud微服务架构升级总结

    总结而言,SpringCloud微服务架构升级总结不仅仅是对微服务和Spring Cloud框架的介绍,更是对如何将这些现代架构理念和技术应用于实际开发中的一次深刻思考。通过对微服务、Spring Boot和Spring Cloud的深入理解和...

    springcloud项目实战微服务架构源代码+文档说明(电商版一套完整架构)

    微信商城+微信公众号开发,该项目根据上海某大型知名电商企业互联网互联网项目,改版而来,使用最新微服务架构技术,页面使用高仿小米界面。功能包含电商模块,会员、SSO、订单、商品、支付、消息、微信、H5和PC、...

    《深入理解Spring Cloud与微服务构建》学习笔记(十二)~写一个Feign客户端

    在本篇学习笔记中,我们将深入探讨如何在Spring Cloud框架下构建一个Feign客户端,用于在微服务架构中实现服务间的远程调用。Feign是一个声明式的Web服务客户端,它使得编写HTTP客户端变得简单,而Spring Cloud对...

    基于Spring Cloud的微服务架构实践指南 .zip

    基于Spring Cloud的微服务架构实践指南 项目概述 本项目是一个基于Spring Cloud的微服务架构实践指南,涵盖了从服务注册与发现、服务消费、断路器、分布式配置中心到消息驱动的微服务等多个方面的教程和示例代码...

    微服务架构与SpringCloud.pptx

    ### 微服务架构与Spring Cloud知识点详解 #### 一、微服务架构概述 微服务架构是一种将单一应用程序开发为一组小服务的方法,每个服务都运行在其自己的进程中,并使用轻量级机制(通常是HTTP资源API)进行通信。...

    微服务架构和SpringCloud专题培训课件.ppt

    微服务架构和SpringCloud专题培训课件 微服务架构是指将一个单体式的应用程序拆分成许多小的、独立的服务, 每个服务都能被独立地开发、测试、部署和扩展。这些服务之间通过轻量级的通信机制进行交互,实现业务功能...

    SpringCloud微服务架构技术分享.pptx

    ### SpringCloud微服务架构关键技术知识点 #### 一、单体应用架构的问题与局限性 - **单体架构的定义**:传统的单体架构是指将所有应用程序的功能捆绑在一起,作为一个整体进行部署和管理的方式。例如,在Java开发...

    微服务Spring Cloud 程序前后端代码代码示例

    在提供的“springcloud学习示例代码”中,我们可以期待看到以下几个关键组件的示例: 1. **Eureka**:这是一个服务注册与发现的组件,允许微服务实例向中心注册,其他服务可以通过Eureka查找并调用这些服务。 2. *...

    SpringCloud+微服务架构+核心组件+案例

    SpringCloud基础概念与入门 SpringCloud核心组件Eureka服务注册与发现 SpringCloud核心组件Ribbon负载...SpringCloud微服务架构设计与实践 SpringCloud服务治理与最佳实践 SpringCloud与DockerKubernetes集成部署

Global site tag (gtag.js) - Google Analytics