springcloud 整合 openfeign的方法

 更新时间:2022年09月14日 10:13:23   作者:Tokey_W  
openFeign 是springcloud对Feign进行了增强,使得Feign支持了springmvc的注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便,这篇文章主要介绍了springcloud 整合 openfeign,需要的朋友可以参考下

一、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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring如何基于Proxy及cglib实现动态代理

    Spring如何基于Proxy及cglib实现动态代理

    这篇文章主要介绍了Spring如何基于Proxy及cglib实现动态代理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Spring AI聊天功能开发步骤

    Spring AI聊天功能开发步骤

    本文给大家介绍Spring AI聊天功能开发步骤,首先引入依赖,继承父版本的springboot依赖,最好是比较新的依赖,结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-04-04
  • GC参考手册jvm垃圾回收详解

    GC参考手册jvm垃圾回收详解

    顾名思义,垃圾收集(Garbage Collection)的意思就是 —— 找到垃圾并进行清理。但现有的垃圾收集实现却恰恰相反: 垃圾收集器跟踪所有正在使用的对象,并把其余部分当做垃圾。记住这一点以后, 我们再深入讲解内存自动回收的原理,探究 JVM 中垃圾收集的具体实现
    2022-01-01
  • 使用JavaIO流和网络制作一个简单的图片爬虫

    使用JavaIO流和网络制作一个简单的图片爬虫

    这篇文章主要介绍了使用JavaIO流和网络制作一个简单的图片爬虫,通过关键字爬取百度图片,这个和我们使用搜索引擎搜索百度图片是一样的,只是通过爬虫可以学习技术的使用,需要的朋友可以参考下
    2023-04-04
  • Java中ArrayList的使用详细介绍

    Java中ArrayList的使用详细介绍

    这篇文章主要介绍了Java中ArrayList的使用,本文给大家详细讲述该相关的知识点,并且会通过大量的案例加以说明,需要的朋友可以参考一下
    2022-04-04
  • Java通过反射机制将对象封装成JSON和JsonArray格式

    Java通过反射机制将对象封装成JSON和JsonArray格式

    这篇文章主要介绍了Java通过反射机制将对象封装成JSON和JsonArray格式,JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法,需要的朋友可以参考下
    2023-10-10
  • BufferedInputStream(缓冲输入流)详解_动力节点Java学院整理

    BufferedInputStream(缓冲输入流)详解_动力节点Java学院整理

    这篇文章主要为大家详细介绍了BufferedInputStream缓冲输入流的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • 全面了解Java中的内部类和匿名类

    全面了解Java中的内部类和匿名类

    下面小编就为大家带来一篇全面了解Java中的内部类和匿名类。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • JavaWeb实现文件上传与下载的方法

    JavaWeb实现文件上传与下载的方法

    这篇文章主要介绍了JavaWeb实现文件上传与下载的方法的相关资料,需要的朋友可以参考下
    2016-01-01
  • Java Socket聊天室编程(二)之利用socket实现单聊聊天室

    Java Socket聊天室编程(二)之利用socket实现单聊聊天室

    这篇文章主要介绍了Java Socket聊天室编程(二)之利用socket实现单聊聊天室的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09

最新评论