SpringBoot+Nacos+OpenFeign环境搭建

news2024/10/3 6:34:15

目录

1.boot方式nacos与openFeign集成

1.引入依赖

2.添加配置

3.测试接口调用

4.常见问题:

       1.版本依赖

       2.nacos客户端

2.cloud方式nacos与openFeign集成 

1.引入依赖

2.添加配置

3.接口定义

4.开启FeignClients客户端

5.远程接口测试

6.Nacos配置中心


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

示例如下图所示:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java - 数据结构,二叉树

一、什么是树 概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。它具有以下的特点&#xff1a; 1、有…

SAP ERP系统MM模块常用增强之四:采购申请输入字段的校验检查

在SAP/ERP项目的实施中采购管理模块&#xff08;MM&#xff09;的创建和修改采购申请一般都会有输入字段校验检查的需求&#xff0c;来防止业务人员录入错误或少录入数据&#xff0c;这方面需求部分是可以通过配置实现&#xff0c;比如一些字段是否必输&#xff0c;是否显示等&…

WebRTC拥塞控制算法——GCC介绍

网络拥塞是基于IP协议的数据报交换网络中常见的一种网络传输问题&#xff0c;它对网络传输的质量有严重的影响&#xff0c; 网络拥塞是导致网络吞吐降低&#xff0c; 网络丢包等的主要原因之一&#xff0c; 这些问题使得上层应用无法有效的利用网络带宽获得高质量的网络传输效果…

C++——智能指针1

目录 RAII auto_ptr模拟实现 智能指针拷贝问题 唯一指针 shared_ptr&#xff08;可以拷贝&#xff09; shared_ptr模拟实现 完整代码 循环引用 weak_ptr模拟实现 定制删除器 shared_ptr定制删除器模拟实现 内存泄漏 RAII RAII&#xff08;Resource Acquisit…

SkyWalking使用案例

SkyWalking监控java项目Halo博客 Halo是一个开源的博客项目&#xff0c;使用java编写&#xff0c;官网地址&#xff1a;https://halo.run/ 安装java环境&#xff0c;Halo对java版本有限制&#xff0c;1.4.3版本以上需要使用java11以上 apt -y install openjdk-11-jdk java -…

matplotlib常用操作

文章目录1 matplotlib绘图1.1 绘图步骤2 matplotlib基本元素2.1 matplotlib 画布2.2 设置坐标轴长度和范围2.3 设置图形的线型和颜色2.4 设置图形刻度范围、刻度标签和坐标轴标签等2.4.1 设置刻度范围2.4.2 设置坐标轴刻度2.5 文本标签图例3 matplotlib的ax对象绘图4 绘制子图5…

2.3 黑群晖驱动:开启nvme缓存、将nvme缓存作为存储盘 教程

黑群晖驱动安装工具下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1CMLl6waOuW-Ys2gKZx7Jgg?pwdchct提取码&#xff1a;chct一、开启NVME缓存在群辉->控制面板->终端机和SNMP->终端机中 勾选“启动SSH”功能&#xff0c;并点击应用&#xff1b;下载安装P…

HACKTHEBOX——Teacher

nmapnmap -sV -sC -p- -T4 -oA nmap 10.10.10.153nmap只发现了对外开放了80端口&#xff0c;从http-title看出可能是某个中学的官网http打开网站确实是一个官网&#xff0c;查看每个接口看看有没有可以利用的地方发现了一个接口&#xff0c;/images/5.png&#xff0c;但是响应包…

国内有哪些支持定制化的低代码平台?

编者按&#xff1a;贴合企业业务需求的系统才是好系统&#xff0c;高程度的定制能力平台意味着可以提供更高契合度的产品&#xff0c;更好地匹配业务需求。本文介绍了国内支持定制化的老厂商低代码平台&#xff0c;具有源码交付、私有化部署、国产化、数据对接等优势。关键词&a…

服务端开发之Java备战秋招面试篇5

努力了那么多年,回头一望,几乎全是漫长的挫折和煎熬。对于大多数人的一生来说,顺风顺水只是偶尔,挫折、不堪、焦虑和迷茫才是主旋律。我们登上并非我们所选择的舞台,演出并非我们所选择的剧本。继续加油吧&#xff01; 目录 1.ArrayList与LinkedList区别&#xff0c; 应用场景…

免费数据恢复软件哪个好?排名前十的软件有这些!

我们经常会使用电脑&#xff0c;有时是为了放松娱乐&#xff0c;有时是为了处理工作。里面保存着大大小小的数据&#xff0c;多的数不胜数。如果我们的数据丢失&#xff0c;通过很多方法都没有办法恢复&#xff0c;那么软件可以帮助用户轻松处理各种丢失的文件&#xff0c;并可…

IDEA git cherry pick 简单使用

cherry pick的作用&#xff1a; 参考了一些博客&#xff0c; eg&#xff1a;参考博客1 参考博客2 再做了个小案例后&#xff0c;我目前的理解是&#xff0c;cherry pick的作用是将一个分支的部分提交/历史提交,可以合并到另外一个分支。这也只是解决办法之一,之后遇到详细真实场…

普元EOS中导出excl页面下载

起因 需要做一个筛选功能的导出表格 解决办法 这个垃圾eos我是真受不了,sb玩意的缺点三天三夜也说不完 后边就没法整response的这些个东西,可真是够愁人的 在网上搜了搜 在普元的帮助文档里也看了看 普元提供的像是老太太的裹脚布一般又臭又长 参照这个可以看一下

怕被AI取代快想办法“攒”个“数字第二大脑”

每日经济新闻发文:来自央视财经微博2月27日消息,美国《财富》杂志网站近日报道,美国一家提供就业服务的平台对1000家企业进行了调查。结果显示,美国最新调查显示50%企业已在用ChatGPT,其中48%已让其代替员工,有公司省下10多万美元!还有30%表示,有计划使用。

4年经验来面试20K的测试岗,一问三不知,我还真不如去招应届生。

公司前段缺人&#xff0c;也面了不少测试&#xff0c;结果竟然没有一个合适的。一开始瞄准的就是中级的水准&#xff0c;也没指望来大牛&#xff0c;提供的薪资在10-20k&#xff0c;面试的人很多&#xff0c;但平均水平很让人失望。看简历很多都是4年工作经验&#xff0c;但面试…

华为OD机试题【找出通过车辆最多颜色】用 C++ 进行编码 (2023.Q1)

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明找出通…

4.7 全文本搜索

文章目录1.概述2.使用全文本搜索2.1 启用全文本搜索支持2.2 进行全文本搜索2.3 使用查询拓展2.4 布尔文本搜索3.全文本搜索使用说明1.概述 首先我们要知道&#xff0c;不是所有搜索引擎都支持全文本搜索&#xff0c;前边我们介绍过MySql支持多种数据类型&#xff0c;而其默认的…

【微服务】-微服务环境搭建

目录 2.1 技术选型 2.2 模块设计 2.3 微服务调用 2.4 创建⽗⼯程 2.5 创建商品微服务 2.6 创建订单微服务 2.1 技术选型 持久层: SpingData Jpa 数据库: MySQL5.7 其他: SpringCloud Alibaba 技术栈 2.2 模块设计 --- shop-parent ⽗⼯程 --- shop-product-api 商品微服…

go提高升阶(四) I/O流学习

I/O 官网课程 购买课程找博主推荐 文章目录I/O文件信息创建文件、目录IO读IO写(权限)文件复制Seeker接口断点续传遍历文件夹bufio电脑中一切&#xff0c;都是以 二进制流的形式存在的。jpg&#xff1a;010100000010010101001010101010010101010 编码格式&#xff0c;还原为一个…

(02)Unity HDRP Volume 详解

1.概述这篇文章主要针对HDRP中的Volume和Volume Post-processing进行解释&#xff0c;针对于各个组件只能进行部分参数的解释&#xff0c;具体的信息可参考官方资料&#xff0c;这里只是对官方文档的图片效果补充以及笔者自己的理解。看到这里进入正文&#xff0c;请确保你的Un…