目录

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-0363e1a2071cconfig-group: ocpx# 服务只能同组调用 https://developer.aliyun.com/ask/317473discovery-group: deliveryspring:application:name: delivery-ocpxprofiles: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: ymlextension-configs:- data-id: ocpx-config.ymlgroup: ${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 {@Autowiredprivate 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调用接口各种问题 - 简书

SpringBoot+Nacos+OpenFeign环境搭建相关推荐

  1. SpringBoot热部署环境搭建和原理分析

    SpringBoot热部署环境搭建 插件会监控 classpath的资源变化 对类加载采用了两种类加载器(只重启开发人员编写的代码部分) 一. 现象 开发项目过程中,修改了某些代码后需要本地验证时,需 ...

  2. SpringBoot+Mybatis+Swagger2环境搭建

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:calebman https://www.jianshu.c ...

  3. SpringBoot框架的环境搭建与使用

    一.springboot概述 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建.运行.调试.部署等.使用Spring Boot可以做到专注于Spr ...

  4. SpringBoot+Mybatis+Swagger2环境搭建+logback-spring日志打印及入库

    本文简介 本文将基于Spring官方提供的快速启动项目模板集成Mybatis.Swagger2框架,并讲解mybatis generator一键生成代码插件.logback.一键生成文档以及多环境的配 ...

  5. idea+SpringBoot+Mybatis+Mysql环境搭建

    开发环境说明: idea2017.2.6 jdk8 maven3.5 绿色版mysql+绿色版mysql客户端 1.idea创建springboot 2.点击直接生成pow.xml文件 <?xm ...

  6. springBoot(1)---简介与环境搭建

    一.springBoot简介与环境搭建 目录 前言:学习计划 1.springBoot环境搭建 2.springBoot入门 3.srpingBoot整合Mybatis 4.springBoot整合R ...

  7. spring boot 源码_SpringBoot2.1.x源码环境搭建详解

    前言 笔者试着从GitHub上拉取SpringBoot源码.然鹅,在本地IDEA打开后,爆各种编译错误,各种问题.经过反复操作,现在总结一下SpringBoot源码环境搭建的实践,便于后期对于源码的学 ...

  8. SpringCloud环境搭建

    # 0.说明 - springboot 2.2.5.RELEASE - springcloud Hoxton.SR6 - java8 - maven 3.3.9  - idea 2018.3.5 # ...

  9. 环境搭建:Windows系统下Nacos集群搭建

    环境搭建:Windows系统下Nacos集群搭建 一.环境准备 名称 版本 下载地址 nacos NACOS 1.2.0 下载地址,提取码:5555 MySQL mysql Ver 14.14 Dis ...

最新文章

  1. 根据当前时间获取本周,下周,上周日期
  2. 计算机科学与技术真的会掉头发吗,大学“最辛苦”的三个专业,“脱发率”很高,毕业后却都很吃香!...
  3. ClickHouse之Distributed Query Execution
  4. Python之创建tuple
  5. 根号三的用计算机怎么表示,计算器根号3怎么打
  6. ArcGIS API for JavaScript Bookmarks(书签)
  7. 安装python性能检测工具line_profiler
  8. 第3章 用户(账户)管理
  9. xp系统打开计算机配置文件,浅析xp系统如何解决开机出现“Windows不能加载本地存储的配置文件“...
  10. bcb6通过https接口post数据_3分钟短文 | 有挑战!PHP用1个函数实现post请求,你用哪个?
  11. 使用 k8s 搭建 confluence 6.10.x 版本
  12. 让textbox紧贴IME
  13. SVN Description : The working copy is locked due to a previous error.
  14. scratch基础讲解与小游戏制作(接水果)
  15. 普通人的电脑离***远吗
  16. AD16 绘制简单电路原理图的基本步骤(适合小白)
  17. linux中的日志切割
  18. Java Word转PDF
  19. excel 求去掉最高分最低分后的平均值
  20. 【JZOJ4117】lhxsb(三角函数+凸壳+CDQ分治)

热门文章

  1. 即时通讯APP开发费用成本多少?
  2. js逆向之常见的压缩和混淆
  3. 3D游戏 和 3D电影
  4. 分析Redis Server went away产生的原因
  5. js高级第四天(apply call bind以及闭包)
  6. 排序函数ROW_NUMBER()
  7. 点对点聊天和多对点聊天程序的详尽阐述
  8. 郭大侠与Rabi-Ribi
  9. P2614 计算机弹琴
  10. 蓝牙HC-05上电自动互联(最详细教程)