SpringBoot + openFeign实现远程接口调用的过程

 更新时间:2022年11月23日 15:08:16   作者:12程序猿  
现在的微服务项目不少都使用的是springboot+spring cloud构建的项目,微服务之间的调用都离不开feign来进行远程调用,这篇文章主要介绍了SpringBoot + openFeign实现远程接口调用,需要的朋友可以参考下

SpringBoot服务之间通过openFeign实现远程接口调用

现在的微服务项目不少都使用的是springboot+spring cloud构建的项目,微服务之间的调用都离不开feign来进行远程调用。那么我们一个服务需要调用第三方的服务的时候,我们常常可能使用httpclient或者restTemplate等客户端api来实现远程调用,其实我们可以在微服务没有适用spring cloud框架的情况下,想调用第三方服务,也可以通过feign组件实现http的远程调用。

实现过程

1.首先创建服务端项目,提供数据接口

1.1添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

1.2 配置application.yml

application.yml:

server:
  port: 8080

spring:
  application:
    name: serviceDemo

1.3 实体类

User:

package com.example.servicedemo.entity;

import lombok.Data;

/**
 * 用户信息
 * @author qzz
 */
@Data
public class User {

    private Integer id;
    private String name;
    private Integer age;
}

1.4 添加控制器方法

UserController:

package com.example.servicedemo.controller;

import com.example.servicedemo.entity.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import java.util.List;

/**
 * @author qzz
 */
@RestController
public class UserController {

    @RequestMapping("/api/user/getUserList")
    public List<User> getUserList(){
        //模拟数据库请求数据
        List<User> list = new ArrayList<>();
        User user = new User();
        user.setId(1);
        user.setName("Jack");
        user.setAge(31);
        list.add(user);
        return list;
    }
}

1.5 启动类

package com.example.servicedemo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author qzz
 */
@SpringBootApplication
public class ServiceDemoApplication {

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

}

浏览器访问:http://localhost:8080/api/user/getUserList

在这里插入图片描述

2.创建客户端项目,调用服务端接口

2.1添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
</dependency>

2.2 配置application.yml

application.yml:

server:
  port: 8081

spring:
  application:
    name: clientName

2.3 实体类

User:

package com.example.clientdemo.entity;

import lombok.Data;

/**
 * @author qzz
 */
@Data
public class User {

    private Integer id;
    private String name;
    private Integer age;
}

2.4 创建OpenFeign接口

注意:@FeignClient的name和value属性必填其一,另外url必填。

package com.example.clientdemo.feign;

import com.example.clientdemo.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

/**
 * openFeign接口
 * URL:就是远程端需要调用接口的服务URL路径,name:就是服务名,value和name一样
 * @author qzz
 */
@FeignClient(name = "serviceDemo",url = "http://localhost:8080")
public interface ServiceDemoFeign {

    /**
     * 获取用户列表
     * @return
     */
    @RequestMapping("/api/user/getUserList")
    List<User> getUserList();

}

2.5 添加控制器方法

UserController:

/**
 * @author qzz
 */
@RestController
public class UserController {

     /**
     * 注入OpenFeign接口
     */
    @Autowired
    private ServiceDemoFeign serviceDemoFeign;

    @RequestMapping("/api/client/user/getUserList")
    public List<User> getUserList(){
        return serviceDemoFeign.getUserList();
    }

}

2.6 启动类

启动类需要添加@EnableFeignClients注解。
加入EnableFeignClients开启Feign注解,使Feign的bean可以被注入

package com.example.clientdemo;

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

/**
 * @author qzz
 */
@EnableFeignClients
@SpringBootApplication
public class ClientDemoApplication {

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

}

2.7 测试效果

浏览器访问:http://localhost:8081/api/client/user/getUserList

在这里插入图片描述

返回结果成功,说明服务调用成功。

完整代码

点击此处进行下载

到此这篇关于SpringBoot + openFeign实现远程接口调用的文章就介绍到这了,更多相关SpringBoot openFeign远程接口调用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring如何通过注解存储和读取对象详解

    Spring如何通过注解存储和读取对象详解

    在Spring中,要想更简单的存储和读取对象的核心是使用注解,这篇文章主要给大家介绍了关于Spring如何通过注解存储和读取对象的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • 搭建MyBatis开发环境及基本的CURD介绍

    搭建MyBatis开发环境及基本的CURD介绍

    这篇文章主要介绍了搭建MyBatis开发环境及基本的CURD,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • java.util.Collection源码分析与深度理解

    java.util.Collection源码分析与深度理解

    这篇文章主要给大家介绍了关于java.util.Collection的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • idea在用Mybatis时xml文件sql不提示解决办法(提示后背景颜色去除)

    idea在用Mybatis时xml文件sql不提示解决办法(提示后背景颜色去除)

    mybatis的xml文件配置的时候,有时候会没有提示,这让我们很头疼,下面这篇文章主要给大家介绍了关于idea在用Mybatis时xml文件sql不提示的解决办法,提示后背景颜色去除的相关资料,需要的朋友可以参考下
    2023-03-03
  • SpringBoot如何集成Netty

    SpringBoot如何集成Netty

    这篇文章主要介绍了SpringBoot如何集成Netty问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Java Volatile关键字你真的了解吗

    Java Volatile关键字你真的了解吗

    这篇文章主要为大家介绍了Java Volatile关键字,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 浅谈一下Java中的堆和栈

    浅谈一下Java中的堆和栈

    这篇文章主要介绍了一下Java中的堆和栈,Java数据类型在执行过程中存储在两种不同形式的内存中:栈和堆,它们通常由运行Java虚拟机(JVM)的底层平台维护,需要的朋友可以参考下
    2023-04-04
  • java中深复制知识点详解

    java中深复制知识点详解

    在本篇文章里小编给大家整理了关于java中深复制知识点详解内容,有需要的朋友们可以学习下。
    2020-12-12
  • java实现双色球机选号码生成器

    java实现双色球机选号码生成器

    这篇文章主要为大家详细介绍了java实现双色球机选号码生成器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • Java org.w3c.dom.Document 类方法引用报错

    Java org.w3c.dom.Document 类方法引用报错

    这篇文章主要介绍了Java org.w3c.dom.Document 类方法引用报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08

最新评论