SpringBoot+Nacos+OpenFeign环境搭建

2023-05-16

目录

1.boot方式nacos与openFeign集成

1.引入依赖

2.添加配置

3.测试接口调用

4.常见问题:

       1.版本依赖

       2.nacos客户端

2.cloud方式nacos与openFeign集成 

1.引入依赖

2.添加配置

3.接口定义

4.开启FeignClients客户端

5.远程接口测试

6.Nacos配置中心

3.常见问题

1.Get请求接口带参数无法传递


1.boot方式nacos与openFeign集成

1.引入依赖

        说明:参考下面依赖

<properties>        
        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>
        <spring-boot.version>2.3.6.RELEASE</spring-boot.version>
        <alibaba-fastjson.version>2.0.20</alibaba-fastjson.version>
</properties>

<dependencies>

        <!--  引入nacos配置中心依赖   -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-config-spring-boot-starter</artifactId>
            <version>${com.alibaba.boot.version}</version>
        </dependency>

        <!--  引入注册中心依赖  -->
        <dependency>
            <groupId>com.alibaba.boot</groupId>
            <artifactId>nacos-discovery-spring-boot-starter</artifactId>
            <version>${com.alibaba.boot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-loadbalancer</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>2.1.1</version>
        </dependency>

</dependencies>

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${alibaba-fastjson.version}</version>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2.添加配置

        

原文参考:SpringCloud-Alibaba-Nacos配置项详解_nacos配置文件详解_JavaMN的博客-CSDN博客

3.测试接口调用

4.常见问题:

       1.版本依赖

        版本如果不匹配也是会出现一些乱七八糟的问题,参照我上面的版本来问题就可以正常使用

       2.nacos客户端

说明:java.lang.NoClassDefFoundError: com/alibaba/nacos/client/utils/StringUtils

出现这个异常时候请把下面这个依赖加进去,这里需要注意版本,否则会有连接不上的情况

 <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.4</version>
 </dependency>

参考: springboot+openFeign+nacos开发实战_openfeign整合nacos_wh柒八九的博客-CSDN博客

2.cloud方式nacos与openFeign集成 

1.引入依赖

重要的事情说三遍。。。。

版本信息非常重要,一定要对应上!!!

版本信息非常重要,一定要对应上!!!

版本信息非常重要,一定要对应上!!!

<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.1.RELEASE</spring-cloud-alibaba.version>

<dependencyManagement>
		<dependencies>
			<!-- SpringCloud 微服务 -->
			<dependency>
				<groupId>org.springframework.cloud</groupId>
				<artifactId>spring-cloud-dependencies</artifactId>
				<version>Hoxton.SR3</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-dependencies</artifactId>
				<version>${spring-boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
			<dependency>
				<groupId>com.alibaba.cloud</groupId>
				<artifactId>spring-cloud-alibaba-dependencies</artifactId>
				<version>${spring-cloud-alibaba.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>

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

		</dependencies>
	</dependencyManagement>

    <dependencies>
        <!-- https://segmentfault.com/q/1010000021044375?bd_source_light=4746641 -->
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
		</dependency>
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
		</dependency>
		<dependency>
			<groupId>com.alibaba.cloud</groupId>
			<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
			<exclusions>
				<exclusion>
					<artifactId>jackson-dataformat-xml</artifactId>
					<groupId>com.fasterxml.jackson.dataformat</groupId>
				</exclusion>
			</exclusions>
		</dependency>

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

2.添加配置

使用cloud方式需要换成bootstrap文件,我选择bootstrap.yaml

server:
  port: 9427
nacos:
  server-addr: 127.0.0.1:8848
  #local环境
  namespace: 4e335d42-4caa-49b0-b209-0363e1a2071c
  config-group: ocpx
  # 服务只能同组调用 https://developer.aliyun.com/ask/317473
  discovery-group: delivery

spring:
  application:
    name: delivery-ocpx
  profiles:
    active: ${BOOT_ENV}

  cloud:
    nacos:
      discovery:
        server-addr: ${nacos.server-addr}
        namespace: ${nacos.namespace}
        group: ${nacos.discovery-group}
        service:  ${spring.application.name}
      config:
        server-addr: ${nacos.server-addr}
        namespace: ${nacos.namespace}
        group: ${nacos.config-group}
        file-extension: yml
        extension-configs:
          - data-id: ocpx-config.yml
            group: ${nacos.config-group}
            refresh: true

3.接口定义

请保持和目标服务的请求接口一致

package com.hhmt.delivery.chain.service;

import com.hhmt.delivery.continer.ServiceMode;
import com.hhmt.delivery.core.domain.ResultVo;
import com.hhmt.delivery.core.page.TableDataInfo;
import com.hhmt.delivery.pojo.model.query.HhChainApiInfoQuery;
import com.hhmt.delivery.pojo.model.vo.HhChainApiInfoVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 链路api信息Service接口
 *
 * @author hauchun
 * @date 2023-02-09
 */
@FeignClient(name = ServiceMode.CHAIN_SERVICE_NAME, path = "/chain/HhChainApiInfo")
public interface IHhChainApiInfoService {
    /**
     * 查询链路api信息
     *
     * @param id 链路api信息主键
     * @return 链路api信息
     */
    @GetMapping(value = "/{id}")
    public ResultVo<HhChainApiInfoVo> selectHhChainApiInfoById(@PathVariable("id") Long id);

    /**
     * 查询链路api信息列表
     *
     * @param hhChainApiInfo 链路api信息
     * @return 链路api信息集合
     */
    @GetMapping("/list")
    public TableDataInfo<HhChainApiInfoVo> selectHhChainApiInfoList(@RequestParam("hhChainApiInfo") HhChainApiInfoQuery hhChainApiInfo);

}

需要注意的是这里的接口入参,虽然在目标服务中可以不使用@RequestParam去定义,但是在这里是需要带上的,否则参数绑定不上

4.开启FeignClients客户端

package com.hhmt.delivery;

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

@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
public class DeliveryOcpxApplication {

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

}

注意需要添加的注解:


在启动类添加这两个注解:
1.@EnableFeignClients 启用Feign客户端
2.@EnableDiscoveryClient 开启注册功能,可以将当前服务注册进注册中心  

5.远程接口测试

在当前服务定义两个接口,通过调用feign定义接口,测试目标服务列表和详情接口是否可以正常调用

1.编写控制器

package com.hhmt.delivery.chain.controller;

import com.hhmt.delivery.chain.service.IHhChainApiInfoService;
import com.hhmt.delivery.core.domain.ResultVo;
import com.hhmt.delivery.core.page.TableDataInfo;
import com.hhmt.delivery.pojo.model.query.HhChainApiInfoQuery;
import com.hhmt.delivery.pojo.model.vo.HhChainApiInfoVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author huachun
 * @version 1.0
 * @description: TODO
 * @email huachun_w@163.com
 * @date 2023-03-01 11:40
 */
@RestController
@RequestMapping("/chain/HhChainApiInfo")
public class HhChainApiInfoController {

    @Autowired
    private IHhChainApiInfoService hhChainApiInfoService;

    @GetMapping("/list")
    public TableDataInfo<HhChainApiInfoVo> chainApiList() {
        TableDataInfo<HhChainApiInfoVo> chainApiInfoVoTableDataInfo = hhChainApiInfoService.selectHhChainApiInfoList(new HhChainApiInfoQuery());
        return chainApiInfoVoTableDataInfo;
    }

    @GetMapping("/{id}")
    public ResultVo<HhChainApiInfoVo> byId(@PathVariable("id") Long id) {
        ResultVo<HhChainApiInfoVo> chainApiInfoVoResultVo = hhChainApiInfoService.selectHhChainApiInfoById(id);
        return chainApiInfoVoResultVo;
    }

}

2.接口调用测试

列表接口测试

 详情接口测试

至此,openFeign远程调用功能已经完成

6.Nacos配置中心

1.需要指定当前类使用的是哪个配置(如果配置文件与规则不相匹配)


@NacosConfigurationProperties(dataId = "delivery-ocpx.yml", groupId = "ocpx")  

2.使用value注解替换NacosValue注解
@Value  

示例如下图所示:

3.常见问题

1.Get请求接口带参数无法传递

我在客户端定义了feign接口,想要调用服务端接口

这是客户端feign接口,此时和服务端接口保持了一致

服务端接口 

 此时虽然接口可以正常调用,但是用来过滤的条件参数却无法传递

此时调用客户端接口测试

服务端此时接受不到参数

解决办法:在客户端使用 @SpringQueryMap注解

更换注解后问题完美解决

参考原文:Spring Cloud使用OpenFeign调用接口各种问题 - 简书

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot+Nacos+OpenFeign环境搭建 的相关文章

  • CUDA kernel errors might be asynchronously reported at some other API call,so the stacktrace below m

    UPDATE 2023 01 11 我觉得评论区的方法比我的方法更加简单 xff0c 建议诸位老铁先看评论区 xff1a 好兄弟们看看是不是这个错 xff1a RuntimeError span class token punctuatio
  • TensorRT windows10 安装过程记录

    这俩天摸鱼玩耍有些多 比平时多 xff0c 电脑 另一台有双系统的 忘了带着了 我的环境和代码都在那台机子上呢 彳亍口巴 xff0c windows 上新配置一个TensorRT环境 咱就根据官方指南 TensorRT 8 4 1 来搞 x
  • 找不到 cl.exe 解决办法

    本篇适用于由于安装VS全家桶失误 xff0c 导致确实没有 cl exe xff0c 而不是有cl exe xff0c 但是没找到的情况哈 xff08 当然 xff0c 后边有添加到环境变量中的方法 xff09 cl exe 是一种工具 x
  • 余弦衰减学习率与linear warmup结合版代码

    以下代码摘自tensorflow官方tpu仓库 span class token keyword def span span class token function cosine learning rate with linear war
  • DiffusionDet源码阅读(1)

    本文仅仅适用于已经通读过全文的小伙伴 本文代码节选自 mmdet 中的 DiffusionDet 代码 xff0c 目前该代码还处于 Development 阶段 xff0c 所以我博客里写的代码和之后的稳定版本可能稍有不同 xff0c 不
  • 分割统一框架:KNet文章

    全文谷歌翻译 43 自己理解 原地址 xff1a https arxiv org pdf 2106 14855 pdf 0 摘要 语义 实例和全景分割已经使用不同的和专门的框架来解决 xff0c 尽管它们存在潜在的联系 本文为这些本质上相似
  • python问题记录 - paramiko模块报错

    文章目录 报错关键字1 代码2 输出3 报错信息4 解决方案 报错关键字 paramikoException ignored in lt function BufferedFile del at 0x109259820 gt Attribu
  • JSP的四种范围

    JSP的四种范围 xff0c 分别为page request session application 这四者都可以用setAttribute 34 getAttribute 34 其中用page时 xff0c 为pageContext se
  • week4-C - TT 的神秘礼物

    题目 TT 是一位重度爱猫人士 xff0c 每日沉溺于 B 站上的猫咪频道 有一天 xff0c TT 的好友 ZJM 决定交给 TT 一个难题 xff0c 如果 TT 能够解决这个难题 xff0c ZJM 就会买一只可爱猫咪送给 TT 任务
  • 【linux】CentOS 7.4下使用yum安装MySQL5.7.20 最简单的

    默认配置文件路径 配置文件 xff1a etc my cnf 日志文件 xff1a var log var log mysqld log 服务启动脚本 xff1a usr lib systemd system mysqld service
  • mongodb生成自签名证书以及配置SSL以及mongo集群搭建(亲测有效)版本-5.0.6

    64 TOC mongodb生成自签名证书以及配置SSL 亲测有效 版本 5 0 6 一直以来都是向大神学习 xff0c 今天也做回大神分享 xff0c 哈哈 xff01 xff01 几个小时的努力不算白费 一 自签名证书生成 1 生成根证
  • mongodb创建用户名和密码(版本5.0.6)

    mongodb创建用户名和密码 xff08 版本5 0 6 xff09 官方文当地址 xff1a 1 mongodb 添加用户 2 mongodo将命令行参数转化为yaml参数的方法 将命令行选项转换为YAML 超级有用哦 3 mongod
  • Lua字符串切分

    lua 字符串切分示例 local requrl 61 34 10 20 144 127 8891 cas login 34 local cutstr 61 string sub requrl 2 print cutstr local cu
  • nginx lua开发配置文件详解

    加载lua文件和库文件 lua package path 34 waf nginx cnwaf lua waf nginx init lua waf nginx cnwaf plugins lua waf nginx cnwaf deps
  • win7系统安装使用高版本的nodejs-v16.19.1

    文章目录 参考 参考 win7这样操作 xff0c 可成功安装高版本node js xff01 注意 xff1a 首先安装13 14版本nodejs 删掉安装目录下的内容下载16 19 1版本的nodejs版本 xff08 下载zip的包
  • j记录一次gorm 使用协程 插入数据一直报错问题 -Duplicate entry ‘95‘ for key ‘PRIMARY‘ [14.649ms] [rows

    文章目录 问题描述问题解决 问题描述 报错代码如下 span class token keyword func span span class token function GetSystemInfoSave span span class
  • stable diffusion的使用

    文章目录 1 文生图1 1 mountains and trees and gree1 2 three dogs1 3 cats1 4 three lovely cats1 5 beautiful girl1 6 机器猫1 7 卡通图像生成
  • DIY:用开源软件搭建自己的物联网

    原文链接 xff1a DIY Open Source Software for your very own IoT 作者 xff1a Vishal Shah 翻译 xff1a 赵屹华 审校 xff1a 刘翔宇 图片来源 xff1a open
  • ubuntu开启rdp服务

    概要 ssh登录用于终端 xff0c 如果需要GUI的远程登陆ubuntu 我了解到大概3中方案 vncxrdp第三方软件 向日葵 TeamViewer之类的 因为vnc我一直配置不好 xff0c 所以试了一下xrdp xff0c 这样wi
  • csp模拟2-T1 HRZ的序列

    题目 时间限制 1s 空间限制 64MB 题目描述 相较于咕咕东 xff0c 瑞神是个起早贪黑的好孩子 xff0c 今天早上瑞神起得很早 xff0c 刷B站时看到了一个序列aaa xff0c 他对这个序列产生了浓厚的兴趣 他好奇是否存在一个

随机推荐

  • Ubuntu 中文件和目录的操作命令

    在 Ubuntu 中 xff0c 文件和目录的操作命令是非常重要的 这些命令帮助您在文件系统中创建 复制 移动 删除和查看文件和目录 以下是一些常用的文件和目录操作命令 xff1a cd cd 命令用于切换当前工作目录 例如 xff0c 要
  • Docker无法在WSL2的Ubuntu启动的问题

    今天在更新了WSL2上的Ubuntu22 04版本 xff0c 在安装Docker后无法启动 xff0c 查看Docker的日志显示如下的错误 INFO 2022 04 22T16 14 55 718999500 43 08 00 stop
  • C语言中的移位操作

    C语言中的移位操作 xff0c 内容不多 不过有些地方你不注意 xff0c 就疏忽了 先做两个小题先 1 unsigned char x 61 3 x lt lt 1是多少 xff1f x gt gt 1是多少 xff1f 2 char x
  • Android获取设备唯一标识的方法

    String uniqueId String mac 61 getMacAddressByInetAddress if mac 61 null amp amp mac equals 34 34 amp amp mac equals 34 0
  • Linux 搭建私有CA证书服务器之超详细版本

    一 CA简介 CA是什么 xff1f CA是Certificate Authority的简写 xff0c 从字面意思翻译过来是凭证管理中心 xff0c 认证授权 它有点类似我们生活中的身份证颁发机构 xff0c 这里的CA就相当于生活中颁发
  • 基于Nginx搭建RTMP-HLS视频直播服务器(推流+拉流)

    1 环境准备 Linux centos7 6 nginx 1 18 0 源码包 span class token function wget span http nginx org download nginx 1 8 1 tar gz n
  • k8s-部署本地仓库harbor

    1 基础配置 xff1a 主机名IP系统版本k8s master192 168 32 128centos 7 6k8s node1192 168 32 129centos 7 6k8s node2192 168 32 130centos 7
  • k8s部署nginx容器

    1 创建挂载nginx namespace yaml配置文件 xff08 k8s master xff1a 192 168 32 128 xff09 apiVersion v1 kind Namespace metadata name ng
  • k8s部署tomcat并且映射本地目录

    1 编写Dockerfile span class token punctuation span root 64 VM 12 7 centos opt span class token punctuation span span class
  • 自动化运维记录之GitLab CI/CD 自动化部署入门教程

    1 前端项目自动化部署需要的环境依赖 Node 安装项目依赖 打包都需要 Nginx web 项目部署必须 正向代理 方向代理 负载均衡等等 GitLab 也会用到 Nginx span class token punctuation sp
  • k8s-kubeadm证书过期续订解决方法

    1 实验目的 通过kubeadm安装的kubernetes集群各个组件所使用证书的期限为1年 xff0c 本实验练习的是到期之后如何续期 2 实验环境 ubernetes环境及版本 整个实验三台机器192 168 32 128作为maste
  • 宝塔部署Django项目-避坑必看

    1 在linux windoes机器上已经安装宝塔 浏览器登录宝塔管理页面 1 1打包模块 span class token number 1 span 将本地计算机的项目下的模块打包 python m pip freeze span cl
  • week11作业—A - 必做题11-1—

    题目 蒜头君从现在开始工作 xff0c 年薪 NNN 万 他希望在蒜厂附近买一套 606060 平米的房子 xff0c 现在价格是 200200200 万 假设房子价格以每年百分之 KKK 增长 xff0c 并且蒜头君未来年薪不变 xff0
  • Linux 系统 nginx 源码编译安装

    nginx版本 xff1a nginx 1 18 0 操作实施环境 Ubuntu 16 04 6 LTS SUSE Linux Enterprise Server 12 SP4 x86 64 注 xff1a 因为是源码安装 xff0c 操作
  • ubuntu18.04和20.04(ubuntu focal)安装MySQL8并使用navicat连接(详细)

    文章的第一节转载自原文连接 本文实现了服务器ubuntu18 04和虚拟机ubuntu20 04两个版本的MySQL8 的安装 xff0c 和navicat的连接 其中ubuntu18 04对应第二节 xff0c ubuntu20 04是u
  • 对接淘宝公共平台API

    1 说明 由于项目临时提出需求 xff0c 需要对接淘宝公共平台查询用户的一些信息 xff0c 所以需要和淘宝平台做对接 xff0c 我查看了一下淘宝公共平台开发文档 xff0c 虽然写的挺丰富挺整洁 xff0c 但我还是一头雾水 xff0
  • 使用IDEA插件从数据库表生成实体类

    目录 1 介绍 2 添加插件 3 创建数据库连接 4 添加数据库连接信息和驱动 5 表生成实体类 1 介绍 EasyCode是基于IntelliJ IDEA Ultimate版开发的一个代码生成插件 xff0c 主要通过自定义模板 基于ve
  • SpringBoot多环境动态环境切换(nacos)

    目录 1 环境变量切换 1 1 建立各环境配置文件 1 2 设置环境变量 2 nacos配置中心动态切换 2 1 配置文件 2 2 nacos配置 2 3 启动服务 3 同一nacos环境下服务不同环境控制 3 1 cloud方式 3 1
  • 批量插入或更新数据(MyBatis-plus框架)

    目录 1 场景说明 2 DUPLICATE 和REPLACE比较 3 批量插入或者更新 两种方式 方式一 xff1a mybatis plus的saveOrUpdateBatch方法 问题 xff1a 如果操作类集成了基础类 xff0c 比
  • SpringBoot+Nacos+OpenFeign环境搭建

    目录 1 boot方式nacos与openFeign集成 1 引入依赖 2 添加配置 3 测试接口调用 4 常见问题 xff1a 1 版本依赖 2 nacos客户端 2 cloud方式nacos与openFeign集成 1 引入依赖 2 添