当前位置:首页 > 服务端 > SpringCloud系列之使用Feign进行服务调用

SpringCloud系列之使用Feign进行服务调用

2022年11月24日 23:29:48服务端11

上一章的学习中,我们知道了微服务的基本概念,知道怎么基于Ribbon+restTemplate的方式实现服务调用,接着上篇博客,我们学习怎么基于Feign实现服务调用,请先学习上篇博客,然后再学习本篇博客

Feign是一个声明式的web service客户端,它使得编写web service客户端更为容易。创建接口,为接口添加注解,即可使用Feign。Feign可以使用Feign注解或者JAX-RS注解,还支持热插拔的编码器和解码器。

环境准备:

  • JDK 1.8
  • SpringBoot2.2.3
  • SpringCloud(Hoxton.SR6)
  • Maven 3.2+
  • 开发工具
    • IntelliJ IDEA
    • smartGit

创建一个SpringBoot Initialize项目,详情可以参考我之前博客:SpringBoot系列之快速创建项目教程
SpringCloud系列之使用Feign进行服务调用 _ JavaClub全栈架构师技术笔记
SpringCloud系列之使用Feign进行服务调用 _ JavaClub全栈架构师技术笔记
SpringCloud系列之使用Feign进行服务调用 _ JavaClub全栈架构师技术笔记

  port: 8083
spring:
  application:
    name: feign-service-consumer
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
    healthcheck:
      enabled: false
  instance:
    status-page-url-path: http://localhost:8761/actuator/info
    health-check-url-path: http://localhost:8761/actuator//health
    prefer-ip-address: true
    instance-id: feign-service-consumer8083

@FeignClient指定服务名称,@RequestMapping指定要调用的接口

package com.example.springcloud.client.service;

import com.example.springcloud.client.bean.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

/**
 * <pre>
 *  UserService
 * </pre>
 *
 * <pre>
 * @author mazq
 * 修改记录
 *    修改后版本:     修改人:  修改日期: 2020/07/28 13:09  修改内容:
 * </pre>
 */
@FeignClient(value = "EUREKA-SERVICE-PROVIDER")
@Service
public interface UserService {
    @RequestMapping(value = "/api/users/{username}",method = RequestMethod.GET)
    User findGithubUser(@PathVariable("username")String username);

}

加上@EnableEurekaClient@EnableFeignClients,写个接口进行测试

package com.example.springcloud.client;

import com.example.springcloud.client.bean.User;
import com.example.springcloud.client.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.Async;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@EnableEurekaClient
@EnableFeignClients
@RestController
public class SpringcloudFeignClientApplication {

    @Autowired
    UserService userService;

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

    @GetMapping("/findUser/{username}")
    public User index(@PathVariable("username")String username){
        return userService.findGithubUser(username);
    }
}

要运行eureka服务端,eureka服务提供者,代码请参考上一章博客

补充:IDEA中多实例运行方法

step1:如图,不要加上勾选
SpringCloud系列之使用Feign进行服务调用 _ JavaClub全栈架构师技术笔记

step2:指定不同的server端口和实例id,如图:
SpringCloud系列之使用Feign进行服务调用 _ JavaClub全栈架构师技术笔记

服务注册,可以看到两个实例
SpringCloud系列之使用Feign进行服务调用 _ JavaClub全栈架构师技术笔记
ok,启动eureka server(服务注册中心),eureka服务提供者端,和feign服务消费者端
SpringCloud系列之使用Feign进行服务调用 _ JavaClub全栈架构师技术笔记
http://localhost:8083/findUser/mojombo
SpringCloud系列之使用Feign进行服务调用 _ JavaClub全栈架构师技术笔记
附录:

ok,本博客参考官方教程进行实践,仅仅作为入门的学习参考资料,详情可以参考Spring Cloud官方文档https://cloud.spring.io/spring-cloud-static/spring-cloud-openfeign/2.2.0.RELEASE/reference/html/

代码例子下载:code download

优质学习资料参考:

作者:smileNicky
来源链接:https://www.cnblogs.com/mzq123/p/13390852.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/server/77993.html

标签: Feign
分享给朋友:

“SpringCloud系列之使用Feign进行服务调用” 的相关文章

Feign服务之间的鉴权问题

Feign服务调服务传递数据的时候,需要带token验证的,而调用那个用户服务的时候被用户服务方拦截然后没有token进不去接口,很明显的是因为没有token导致,那么Feign里面有提供一个接口叫做RequestInterceptor,只要实...

声明式服务消费Feign——4(使用Feign实现消费者服务熔断)

声明式服务消费Feign——4(使用Feign实现消费者服务熔断)

使用Feign实现消费者服务熔断 服务熔断 1.在yml文件开启 hystrix功能 2.指定熔断回调逻辑 3.测试...

Spring cloud alibaba--Feign微服务调用组件

Spring cloud alibaba--Feign微服务调用组件

目录 1.1Feign优势 2.spring cloud alibaba整合Feign 3.Spring Cloud Feign日志配置  4.Feign契约配置  5.Feign超时时间配置 6.Open Feign自定义...

Feign支持文件上传

1.2. Source code and dependencies Beside feign-core, we will use feign-form which is module that adds support for encoding...

聊聊如何根据环境动态指定feign调用服务名

前言 前段时间和朋友聊天,他说他部门老大给他提了一个需求,这个需求的背景是这样,他们开发环境和测试环境共用一套eureka,服务提供方的serviceId加环境后缀作为区分,比如用户服务其开发环境serviceId为user_dev,测试环境为user_test。每次服务提供方发...

feign与dubbo

feign与dubbo

1 feign 1.1 原理 Feign远程调用原理,这篇文章写得比较好。 1.2 优化策略 既然feign的通讯协议是http的,那么http的优化策略同样适用于feign 常规配置如下 feign: hystrix: ena...

feign公共接口 RequestMapping 与Controller冲突

import feign.Feign; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigur...

使用SpringCloudFeign调用服务实例

使用SpringCloudFeign调用服务实例

前言 该实例主要是提供给大家一个实例,告诉大家在实际的项目中使用SpringCloudFeign完成A服务调用B服务的实现步骤,不涉及原理讲解. 整体描述 mis-coursedesign服务调用mis-baseinfo服务的c...

feign调用超时问题

feign调用超时问题

问题1:调用远程服务时显示调用失败,经排查发现是调用该远程服务比较耗时,超过了openFeign默认的超时时间(1秒)。 解决:配置feign调用超时时间。因为项目使用了Apollo配置中心,所以在Apollo上进行配置。 #feign调用超时时间 feign.cli...

SpringBoot项目中使用feign调用远程http接口(超详细文档)

SpringBoot项目中使用feign调用远程http接口(超详细文档)

参考文档: Feign远程调用原理 在实际生产需要中,经常会遇到调用远程http接口的场景. 举例: 比如我的Springboot项目会调用另一个Springboot项目的接口, 或者调用一些第三方服务的Restful api. 采用常规的方案,需...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。