springcloud 整合 openfeign的方法

目录
  • 一、openfeign简介
  • 二、使用
    • 1、依赖
    • 2、配置文件
    • 3、启动类
    • 4、接口
    • 5、controller

一、openfeign简介

Feign是Nefix开发的声明式、模块化的Http客户端。Feign可以帮助我们更快捷、优雅地调用Http Api。

在springclouid中使用 feign非常简单  --创建一个接口,并在接口中添加一些注解,代码就完成了,Feign支持多种注解

openFeign 是springcloud对Feign进行了增强,使得Feign支持了springmvc的注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便

二、使用

1、依赖

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--服务注册与发现-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <dependency>
            <groupId>com.sofwin</groupId>
            <artifactId>springEntity</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>

2、配置文件

加入到nacos的服务中

server:
  port: 7000
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        heart-beat-interval: 1000
  application:
    name: openFeign

3、启动类

package com.sofwin;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * @author : wentao
 * @version : 1.0
 */
@SpringBootApplication
//开启服务注册与发现
@EnableDiscoveryClient
//开启Feign
@EnableFeignClients
public class App {
    public static void main(String[]args){
        SpringApplication.run(App.class,args);
    }
}

4、接口

package com.sofwin.service;

import com.sofwin.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author : wentao
 * @version : 1.0
 */
//写的是服务端的名称
@FeignClient("nacos-previder")
public interface UserService {

    @GetMapping("/user/data")
    String getUserName();

    @GetMapping("/user/info/{msg}")
    //这里注意了 这个注意@PathVariable 一定要添加name或者value属性
    String infoResful(@PathVariable(name = "msg") String msg);

    @GetMapping("/user/data5")
    //这里注意了 调用远程服务必须使用@RequesParam注解 并且名字与远程服务的参数名相同
    String simpleParam(@RequestParam("userName11") String userName,@RequestParam("pwd") String pwd);

    //其实openFeign默认就是json的格式  这里是为了规范
    @PostMapping("user/data6")
    User getUser (@RequestBody User user);
    @DeleteMapping("user/data7")
    User getUser2 (@RequestBody User user);
    //或者我们就可以使用一个注解 将json格式改为form表单的格式发送到远程服务中
    //然后远程不用写@RequestBody
    @PostMapping("user/data8")
    User getUser3 (@SpringQueryMap User user);

    //集合
    @PostMapping("user/data9")
    List<User> getList(@RequestBody User user);
}

接口中定义远程服务中的的请求

使用 @FeignClien的注解    名称是远程服务的名称

5、controller

package com.sofwin.controller;

import com.sofwin.pojo.User;
import com.sofwin.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author : wentao
 * @version : 1.0
 */
@RestController
@RequestMapping("/role")
public class RoleController {

    @Autowired
    private UserService userService;
    @GetMapping("/data")
    public String data(){
        String userName = userService.getUserName();
        return userName;
    }
    //Resful风格
    @GetMapping("data1")
    public  String infoResful(String msg){
        String s = userService.infoResful(msg);
        return s;
    }
    //简单类型的请求参数
    @GetMapping("/data2")
    public  String simpleParam(String userName,String pwd){
        return  userService.simpleParam(userName,pwd);
    }
    //自定义   json字符串 或者表单形式
    @PostMapping("/data3")
    public  User getUser(User user){
        return  userService.getUser(user);
    }
    @DeleteMapping("/data4")
    public  User getUser2(User user){
        return  userService.getUser2(user);
    }
    @PostMapping("/data5")
    public  User getUser3(User user){
        return  userService.getUser3(user);
    }
    //返回结果为集合类型
    @PostMapping("/data6")
    public List<User> getList(User user){
        return  userService.getList(user);
    }
}

注意:

//其实openFeign默认就是json的格式

到此这篇关于springcloud 整合 openfeign的文章就介绍到这了,更多相关springcloud 整合 openfeign内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringCloud Ribbon与OpenFeign详解如何实现服务调用

    目录 Ribbon 初识Ribbon Ribbon是什么 Ribbon能干什么 使用Ribbon实现负载均衡 RestTemplate三步走 负载均衡算法 轮询算法 OpenFeign 初识OpenFeign 什么是OpenFeign 如何使用OpenFeign OpenFeign超时控制 OpenFeign日志打印 Ribbon 初识Ribbon Ribbon是什么   Ribbon是Netflix发布的开源项目,主要功能是提供对客户端进行负载均衡算法的一套工具,将Netflix的中间层服务连

  • SpringCloud openfeign声明式服务调用实现方法介绍

    目录 一.介绍 二.使用 三.通讯优化 一.介绍 OpenFeign是一种声明式.模板化的HTTP客户端(仅在Application Client中使用)(称OpenFeign作用:声明式服务调用).声明式调用是指,就像调用本地方法一样调用远程方法,无需感知操作远程http请求.OpenFeign替换RestTemplate. 二.使用 (1)导入依赖 <parent> <groupId>org.springframework.boot</groupId> <ar

  • SpringCloud OpenFeign超详细讲解模板化远程通信的实现

    目录 1. openFeign实现 1.1 pom依赖 1.2 yaml配置 1.3 客户端调用代码 1.4.服务端暴露接口 1.5.测试日志 1. openFeign实现 基于spring-boot-starter-parent 2.6.8,spring-cloud-dependencies 2021.0.3,一个order服务一个user服务 1.1 pom依赖 <!--nacos服务注册与发现--> <dependency> <groupId>com.alibab

  • SpringCloud OpenFeign与Ribbon客户端配置详解

    目录 一.前言 二.OpenFeign与Ribbon配置 1.OpenFeign默认处理请求超时时间 1.1.模拟处理请求0.5秒 1.2.模拟处理请求1秒 2.Ribbon配置 2.1.配置请求处理超时5秒 2.2.模拟请求处理5秒 3.OpenFeign配置 3.1.配置请求处理超时6秒 3.2.OpenFeign配置对全部服务有效 3.3.针对某个服务 一.前言 OpenFeign为微服务架构下服务之间的调用提供了解决方案,OpenFeign是一种声明式.模板化的HTTP客户端.在Spri

  • SpringCloud OpenFeign 服务调用传递 token的场景分析

    目录 业务场景 RequestInterceptor 多线程环境下传递 header(一) 分析 inheritableRequestAttributesHolder 原理 分析 inheritableRequestAttributesHolder 失效原因 多线程环境下传递 header(二) 控制主线程在子线程结束后再结束 重新保存 request 的 header 结语 业务场景 通常微服务对于用户认证信息解析有两种方案 在 gateway 就解析用户的 token 然后路由的时候把 us

  • SpringCloud学习笔记之OpenFeign进行服务调用

    目录 前言 1.OpenFeign 1.1.OpenFeign概述 1.2.OpenFeign的使用步骤 1.3.超时控制 1.3.1.是什么? 1.3.2.修改代码设置超时错误 1.3.3.进行超时配置 1.4.日志打印 1.4.1.是什么? 1.4.2.日志级别 1.4.3.如何开启日志打印 总结 前言 Feign是一个声明式的Web服务客户端,是面向接口编程的.也就是说使用Feign,只需要创建一个接口并使用注解方式配置它,就可以完成对微服务提供方的接口绑定. 在使用RestTemplat

  • springcloud 整合 openfeign的方法

    目录 一.openfeign简介 二.使用 1.依赖 2.配置文件 3.启动类 4.接口 5.controller 一.openfeign简介 Feign是Nefix开发的声明式.模块化的Http客户端.Feign可以帮助我们更快捷.优雅地调用Http Api. 在springclouid中使用 feign非常简单  --创建一个接口,并在接口中添加一些注解,代码就完成了,Feign支持多种注解 openFeign 是springcloud对Feign进行了增强,使得Feign支持了spring

  • SpringCloud 服务负载均衡和调用 Ribbon、OpenFeign的方法

    1.Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的-套客户端―负载均衡的工具. 简单的说,Ribbon是Netlix发布的开源项目,主要功能是提供客户端的软件负载均衡算法和服务调用.Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等.简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器.我们很容易使用Ribbon实现自定义的负载均

  • springcloud整合seata的实现代码

    目录 一.背景 二.项目结构 三.实现功能: 四.项目使用到的技术 五.整合步骤 1.引入spring-cloud-starter-alibaba-seata jar包 2.涉及到的业务库操作 1.业务库需要存在 undo_log 表 2.业务表主键 3.页面中自动更新时间戳 3.开启数据源代理 1.自动配置数据源代理 2.手动配置AT模式数据源代理 4.传递 xid 5.事务分组和seata server对应上 6.注册中心和配置中心 7.业务方法加上@GlobalTransactional

  • SpringBoot整合OpenFeign的坑

    目录 项目集成OpenFegin 集成OpenFegin依赖 实现远程调用 解决问题 问题描述 问题分析 问题解决 最近,在使用SpringBoot+K8S开发微服务系统,既然使用了K8S,我就不想使用SpringCloud了.为啥,因为K8S本身的就提供了非常6的服务注册与发现.限流.熔断.负载均衡等等微服务需要使用的技术,那我为啥还要接入SpringCloud呢?额,说了这么多,在真正使用SpringBoot+K8S这一套技术栈的时候,也会遇到一些问题,比如我不需要使用SpringCloud

  • Springcloud整合stream,rabbitmq实现消息驱动功能

    springcloud整合stream,rabbitmq实现消息驱动功能 1.代码实现: 创建项目stream 添加依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.2</version> <relativePath/>

  • SpringCloud协同开发实现方法浅析

    目录 微服务注册问题 微服务间调用问题 前后端联调问题 相比Springboot开发,SpringCloud开发要复杂的多,因为涉及服务的注册发现,多个微服务模块间的调用等. 最简单的解决方案是每个开发者都在本地启动一套完整的开发环境,包括网关.nacos等各个组成微服务的模块,如果系统模块较少,这种开发方案还可以接受,如果系统太多,本地启动整套环境未免太多臃肿,非常不方便. 微服务注册问题 像下面这张图,倒数第二个服务启动了两个实例,他们两个组成了一个集群.前端在调用接口的时候可能想调用A的该

  • SpringCloud Hystrix熔断器使用方法介绍

    目录 Hystrix(hi si ju ke si)概述 Hystix 主要功能 隔离 Hystrix 降级 Hystrix降级-服务提供方 初始化程序和Fiegn程序一致 Hystrix降级-服务消费方 provider与Fiegin一致 Hystrix 熔断 Hystrix 熔断监控 Turbine聚合监控 搭建监控模块 修改被监控模块 启动测试 Hystrix(hi si ju ke si)概述 Hystix 是 Netflix 开源的一个延迟和容错库,用于隔离访问远程服务.第三方库,防止

  • 利用discuz自带通行证整合dedecms的方法以及文件下载

    整合discuz的通行证:利用discuz自带通行证整合dede的方法以及文件下载 首先感谢柏拉图提供这么好的免费程序在论坛上看到大家很多都想整合discuz.我想柏拉图肯定会弄一个非常完善的dede的通行证.在没有出来之前我们就用discuz自带的通行证吧.个人看了一下还是非常不错的.一:前提准备以及版本:dede版本:3.1 lit版,3.1正式版上测试都通过discuz版本.用的是最新的5.0版本二:主要涉及几个文件1:dede:(1)include/config_passport.php

  • Spring与Mybatis基于注解整合Redis的方法

    基于这段时间折腾redis遇到了各种问题,想着整理一下.本文主要介绍基于Spring+Mybatis以注解的形式整合Redis.废话少说,进入正题. 首先准备Redis,我下的是Windows版,下载后直接启动redis-server就行了,见下图: 一,先上jar包 二,创建实体类 package com.sl.user.vo; import java.io.Serializable; import com.fasterxml.jackson.databind.PropertyNamingSt

  • CodeIgniter整合Smarty的方法详解

    本文实例讲述了CodeIgniter整合Smarty的方法.分享给大家供大家参考,具体如下: CI3.0.2发布后感觉模板类还是不怎么好用,而且不能编译.Smarty功能强大,用习惯了Smarty标签,一般难以放弃,而且,是可以编译文件执行,速度快,我们可以把它们整合使用,弥补CI的模板功能的不足.我们整合使用的是CI版本3.0.3及 Smarty版本3.1.27.下面描述整合过程. 1.下载smarty-3.1.27 2 .解压smarty-3.1.27到CI项目中的application\l

随机推荐