SpringCloud框架+Feign技术框架整合

SpringCloud通过Controller实现Feign接口简化代码 项目结构与说明: feign-provider-api(公用接口依赖模块) feign-provider-service(feign-provider-api的接口实现模块) feign-consumer-service(引用feign-provider-api依赖调用Feign) Feign服务提供者: 在feign-provider-api创建feign接口: @Fe... 阅读详情

接上条博客的项目:https://blog.youkuaiyun.com/SpringCYB/article/details/89147639

什么是Feign?

当我们通过RestTemplate调用其它服务的API时,所需要的参数须在请求的URL中进行拼接,如果参数少的话或许我们还可以忍受,一旦有多个参数的话,这时拼接请求字符串就会效率低下,并且显得好傻。

那么有没有更好的解决方案呢?答案是确定的有,Netflix已经为我们提供了一个框架:Feign。

Feign是一个声明式的Web Service客户端,它的目的就是让Web Service调用更加简单。Feign提供了HTTP请求的模板,通过编写简单的接口和插入注解,就可以定义好HTTP请求的参数、格式、地址等信息。

而Feign则会完全代理HTTP请求,我们只需要像调用方法一样调用它就可以完成服务请求及相关处理。Feign整合了Ribbon和Hystrix(关于Hystrix我们后面再讲),可以让我们不再需要显式地使用这两个组件。

总起来说,Feign具有如下特性:

  • 可插拔的注解支持,包括Feign注解和JAX-RS注解;
  • 支持可插拔的HTTP编码器和解码器;
  • 支持Hystrix和它的Fallback;
  • 支持Ribbon的负载均衡;
  • 支持HTTP请求和响应的压缩。

这看起来有点像我们springmvc模式的Controller层的RequestMapping映射。这种模式是我们非常喜欢的。Feign是用@FeignClient来映射服务的。

1.在springcloud父级项目下创建一个springboot项目

注意需要勾选的服务

目前包结构

2.在他的配置类配置Feign客户端

server:
  port: 8767

spring:
  application:
    name: springcloud-feign

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka

3.在它的启动类上加注解
        @EnableEurekaClient
        @EnableFeignClients
        如果启动类不在根目录则需要扫面包(basePackages = "com.jk.*")

package com.jk.app;

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.context.annotation.ComponentScan;

@SpringBootApplication
@EnableEurekaClient
//扫描包
@EnableFeignClients("com.jk.*")
//@ComponentScan("com.jk.*")
public class SpringcloudFeignApplication {

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

}

4.创建service接口,并加上注解
  @FeignClient("生产者实例名") //指定生产者实例名

package com.jk.service;


import org.springframework.cloud.openfeign.FeignClient;

//@FeignClient("生产者实例名") //指定生产者实例名称,在生产者的配置文件中
@FeignClient("springcloud-user-reg")
public interface UserService {
    
}

5.接着创建Controller

6.在生产者的Controller中写一个方法,发布接口

    /**
     * feign技术
     */
    @GetMapping("select")
    @ResponseBody
    public String select(){
        System.out.println("frign调用成功..");
        return "success";
    }

7.feign消费者的service接口调用生产者发布的接口

package com.jk.service;


import org.springframework.cloud.openfeign.FeignClient;

//@FeignClient("生产者实例名") //指定生产者实例名称,在生产者的配置文件中
@FeignClient("springcloud-user-reg")
public interface UserService {
    //调用provider生产者发布的接口
    // 定义抽象方法,抽象方法没有方法体
	// 方法的定义和生产者controller中的方法保持一致
	// 包括请求的方式,传入的参数,方法定义和返回参数
	// @GetMapping("/selectUser/{id}")
	// public User selectUser(@PathVariable("id") Integer userId);
    @GetMapping("select")
    public String select();
}

8.feign消费者的Controller中

    @GetMapping("select")
    public String select(){
        String resule = userService.select();
        return resule;
    }

9.在配置类加上@ComponentScan("com.jk.*")注解扫描

10.启动项目访问接口看看是否成功调用Feign

成功了!,看下打印台!调用成功

完成

SpringCloud+Nacos+Mybatis+Redis+Kafka 微服务整套框架环境搭建 作为一个架构师,首先项目框架必须是要会搭建的。今天就来介绍线上的框架搭建,注意不是学习。 用到的技术 maven构建 整合springboot+mybatis+redis+kafka 整合springcloud+nacos 搭建步骤 uc-parent工程 新建一个 uc-parent(uc可以是自己公司的简称) maven 聚合父工程,用来统一jar包版本管理。里面就一个pom文件: pom.xml ​ 注意修改下repository标签,改成自己的仓库地址 失效了的话可以联系我,工程结构图: or 阅读详情

相关推荐

Springcloud项目整合openfeigin

springcloud整合openfeigin实现第三方效验接口提示:以下是本篇文章正文内容,下面案例可供参考以上就是使用 OpenFeign 实现远程服务调用的基本步骤。通过定义 Feign 接口,并使用注解来声明服务调用的细节,可以使得代码更加清晰和简洁。

2201_75470170的博客 2064

SpringCloud 简化微服务调用 Feign

SpringBoot SpringCloud运用Euraka微服务架构 首先说到SpringBooot项目架构,首选jdk1.8以上,当然啊,jdk1.7也不是不可以; 我们本次要做的是建立父工程(pom),和多个子工程(pojo,common,server,web等),一个中间件Euraka,编程工具IDEA; 首先说父工程,只是做以来管理,和子模块管理,编码统一所以说,不做单独启动...

scdncby的博客 742

SpringCloud整合Feign及Nacos搭建一个简单微服务工程

概述 在之前的微服务项目中注册中心可能用的多的是Eureka整合SpringCloud,最近看了下阿里开源的Nacos,个人感觉蛮好用的。它自带的配置中心可以让开发者更加轻松的搭建一个微服务环境。Nacos环境搭建也非常简单,前面我已经关于Nacos环境搭建做了很详细的介绍,这里我就不在重复描述了 Nacos环境搭建 工程搭建 1.首先我们先用SpringBoot创建2个工程,我这里就叫:prov...

qq_38163309的博客 7183

简化本地Feign调用,老手教你这么玩

分享一下对FeignClient的改造思路,在开发过程中想要让Feign调用稳定访问特定环境,又不想来回修改@FeignClient中的url,通过添加一个配置轻松搞定。

3857

SpringCloud微服务:基于Nacos组件,整合Dubbo框架

由于Feign的自动生成HTTP请求机制,其性能相较于Dubbo的直接RPC调用会有一定的损失。在负载均衡方面,Dubbo提供了更多的配置选项和策略,具有更强的灵活性。社区活跃度:Feign的社区相对活跃,随着SpringCloud的发展,Feign也在不断迭代和完善。Dubbo的社区虽然活跃度不如Feign,但凭借其多年的积累和沉淀,依然拥有大量的用户和稳定的支持者。服务发现:Feign依赖于Eureka、Consul、Nacos等注册中心实现服务发现,而Dubbo则提供了内置的服务发现机制。

javaweiming的专栏 1535

【SpringCloud】SpringCloud整合五大组件Eureka、Ribbon、Hystrix、Feign、Zuul

Spring Cloud是一个基于Spring Boot实现的微服务架构开发工具,它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。 特点 约定优于配置 适用于各种环境 隐藏了组件的复杂性,并提供声明式、无xml的配置方式 开箱即用,快速启动 轻量级的组件。SpringCloud整合的组件大多比...

像风走过八千里 3703

简化 Spring 控制器:只须写接口即可

大伙有没有觉得 Spring Web 项目中,写了 Controller 又要写 Service,而它们都是很相似的,差不多的方法名字、参数、返回值……为什么不能减少重复写在一起呢?其实 MVC 时代,C 就是 Controller 包办所有,但后来人说这样不好,业务逻辑不应该写在 Controller 里面,应该写在 Service 里面然后让 Controller 去调用,Controller 呢?就负责一些参数校验呀,结果转换返回之类的杂项工作...

zhangxin09的专栏 794

DC-DC拓扑:从电感位置一眼识别Buck、Boost与Buck-Boost

本文详细解析了DC-DC拓扑中电感位置对识别Buck、Boost与Buck-Boost电路的关键作用。通过对比不同拓扑的电感连接特征,提供快速识别方法和设计要点,帮助工程师避免常见错误并优化电路性能。特别强调电感位置对输出质量和效率的影响,适合电源设计人员参考。

java2000.net 372

Spring Cloud 入门 ---- OpenFeign 服务调用【随笔】

服务调用 Spring Cloud 入门 ---- OpenFeign 服务调用 简介 Feign 是一个声明式 WebService 客户端,使用 Feign 能让编写 WebService 客户端更加简单。 它的使用方法是定义一个服务接口然后在上面添加注解。Feign 也支持可插拔式的编码器和解码器。Spring Cloud 对 Feign 进行了封装,使其支持 Spring MVC 标注注解和 HttpMessageConverters。OpenFeign 可以与 Eureka 和 Ribbon

qq_39668819的博客 603

K-近邻算法: k-nearest neighbor classification (kNN) 详细介绍

@创建于:2020.04.09 @修改于:2020.04.09,2024.06.22 文章目录1、kNN介绍2、k近邻法的三要素详解2.1 距离度量2.2 k值的选择2.3 分类决策规则3、k近邻法的实现:kd树4、Python实现过程5、优缺点6、常见问题 1、kNN介绍 kNN是一个基本而简单的分类算法,作为监督学习,那么KNN模型需要的是有标签的训练数据,对于新样本的类别由与新样本距离最近的k个训练样本点按照分类...

chenhepg的博客 9万+

SAP采购订单行项目增强实战:用BADI ME_GUI_PO_CUST添加自定义字段(避坑指南)

本文详细解析了如何通过BADI ME_GUI_PO_CUST在SAP采购订单行项目中添加自定义字段,包括技术架构理解、字段扩展步骤、自定义函数组创建及BADI实现。文章特别强调了避开官方文档未提及的陷阱,如字段映射限制和屏幕显示问题,并提供了高级优化技巧和性能建议。

weixin_30402343的博客 593

Day86 SpringCloud

系统架构 随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也因此不断的演进、升级、迭代。从单一应用,到垂直拆分,到分布式服务,到SOA,以及现在火热的微服务架构,还有在Google带领下来势汹涌的Service Mesh。我们到底是该乘坐微服务的船只驶向远方,还是偏安一隅得过且过? 其实生活不止眼前的苟且,还有诗和远方。所以我们今天就回顾历史,看一看系统架构...

qq_31707969的博客 177

告别手动改图!用Python+PyWin32驱动SolidWorks,实现参数自动化修改(保姆级避坑指南)

本文详细介绍了如何利用Python和PyWin32驱动SolidWorks实现参数自动化修改,提供从环境配置到API连接的工业级解决方案。通过实战案例和避坑指南,帮助工程师高效搭建自动化脚本工作流,显著提升设计效率。

weixin_30614109的博客 739

SpringCloud专题

有了SpringCloud这样的技术生态,可以使我们在开发微服务的时候,快速去解决一些技术问题,不需要考虑第三方集成带来的额外成本,只要通过一些简单的配置组件,可以来完成我们在微服务架构落地下的一些技术问题,从而让我们更加的关注在代码层面,关注在业务的实现上面,SpringCloud是一套分布式微服务系统的技术解决方案,他提供了快速构建一套微服务系统常用的组件,比如配置管理,服务的注册与发现,服务调用的负载均衡,资源隔离,熔断降级等等。基于阿里巴巴开源组件集成的一套微服务解决方案。

qq_16298769的博客 181

Python实现飞书机器人定时发送文本、图片等群消息

python实现飞书群自动发送告警消息

tyh_keephunger的博客 2万+

USB2.0信号完整性测试之眼图

名称线缆颜色引脚描述红色绿色白色GND黑色。

qq_53766840的博客 3283

太神了!开源大佬的SpringBoot+微服务架构笔记,一般人真肝不出来

SpringBoot是企业级开发的整体整合解决方案,特别用于快速构建微服务应用,旨在用最简单的方式让开发人员适应各种开发场景;下面是SpringBoot的优点:为了帮助大家更好的理解并运用SpringBoot小编找到并整合这份笔记,本笔记介绍SpringBoot和微服务的使用和内部原理;内容包含微服务概念、配置文件、日志框架的使用、web开发、Thymeleaf模板引擎、Docker容器技术、MyBatis、Spring Data JPA、自定义starter等;由springboot核心技术+整合篇组成能

老男孩的架构路 630

黑猫带你学UFS协议第8篇:UFS电气特性详解(Power、CLK、Reset等)

UFS强制支持secure mode。UFS设备可能会存储个人或者公司的信息,UFS提供把数据永久从设备上移除的功能,并且保证对存储介质进行逆向恢复数据也恢复不回来原有数据。安全模式是以逻辑单元为单位进行应用的,不同的逻辑单元可以有不同的安全模式。由于UFS设备的存储介质不同,所以把数据安全从存储介质上移除方式会有不同,spec提供了三种通用的移除方法,UFS设备至少支持其中一种。● 对存储的位置进行一次擦除操作。● 对存储的位置使用单一字符(比如0xAA)覆盖写,然后进行擦除。.........

黑猫奥利奥的博客 4075

快速学习微服务保护框架--Sentinel

微服务安全监控限流框架 sentinel

qq_55272229的博客 2430

网神 SecGate 3600 防火墙 app_av_import_save文件上传漏洞(含批量验证poc)

网神 SecGate 3600 防火墙 app_av_import_save文件上传漏洞(含批量验证poc)

weixin_43567873的博客 296

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

谷粒商城整合若依避坑指南:从框架植入到MP代码生成的完整流水线

本文详细介绍了谷粒商城与若依框架的整合实践,涵盖权限管理、Redis配置冲突解决及MyBatisPlus代码生成器的深度定制。通过模块化设计和依赖隔离,有效解决多环境配置问题,并提供高效代码生成流水线方案,显著提升开发效率。

milk8的博客 158

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

微服务---4.初始SpringCloud

微服务是一种架构方式,最终肯定需要技术架构去实施。 微服务的实现方式很多,但是最火的莫过于Spring Cloud了。为什么? 后台硬:作为Spring家族的一员,有整个Spring全家桶靠山,背景十分强大。 技术强:Spring作为Java领域的前辈,可以说是功力深厚。有强力的技术团队支撑,一般人还真比不了 群众基础好:可以说大多数程序员的成长都伴随着Spring框架,试问:现在有几家公司开发...

lucasmaluping的专栏 328

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

SpringCloud整合Feign配置类之间的关系以及feign配置隔离的实现

SpringCloud整合Feign有多个配置类,因为其中SpringCloud和整合Feign的同时还需要把Ribbon整合进来,包括Feign的一些自身组件的配置更换等,下面我们先来把这些配置类梳理一下 关于springcloud整合feign相关的配置类如上图所示,这些类都是为springcloud整合feign的时候所准备的,我们去springcloud-feign包下面的spring.factories文件看一下 其中前面两个配置类是我们常用的,首先先来看一下FeignAut..

我神级欧文的博客 2639

SpringCloud 整合 Dubbo

Dubbo有两种使用方式: 1、基于SOA的思想,将一个单体架构拆分为web层和Services层,然后web和services借助Dubbo框架进行数据交互。 2、SpringCloud 整合Dubbo。

一切总会归于平淡 9052

SpringCloud Alibaba框架都有啥啊

总结一下SpringCloud Alibaba都集成了哪些组件及各自的作用,希望对SpringCloud Alibaba框架有个全面的认识,后面再根据每个组件深入研究探讨

java后端开发的博客,不仅仅是后端开发 9932

SpringCloud + Zookeeper + Feign整合及Feign原理

从上面的分析可以得出,当服务启动时,通过@EnableFeignClients注解,启动对标注了@FeignClient注解的类进行扫描和注册,通过FeignClientFactoryBean将FeignClient注册到Spring容器中。当使用@Autowired注解进行自动注入时,注册到Spring容器中FeignClient会以动态代理的形式注入,这些动态代理中包含了接口方法的methodHandler用以处理调用转发。最后编辑于:2025-06-15 09:49:01©。

pingguocu3的博客 1152
上一篇: SpringCloud框架讲解,以及如何在idea上搭建一个简单的SpringCloud框架并使用Ribbon技术
下一篇: SpringCloud框架如何集成Redis缓存技术
听风动
博客等级 码龄8年 63粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听风动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值