SpringBoot 引入nacos 【最新 | 可运行】

SpringBoot 引入nacos

首先要了解在 Springboot 中只支持那些 Springboot 的版本(我真的被这个搞死了),可以如下图参考:

在这里插入图片描述

下面我们就开始吧

下载 Nacos

nacos 下载地址,这里可以选择你要下载的版本,我选择下载了2.2.2,在下载的时候根据自己的电脑选择合适的压缩包

我这里演示 windows 版本

下载好以后就可以解压,放到一个无中文的目录(千万)

然后点开nacos目录到达bin目录里面就是可运行的文件了。

如果想要单节点运行(一般我们自己学习都是单节点,但是默认启动多节点就会报错),请运行下列命令:

.\startup.cmd -m standalone

命令的运行是在 bin 目录下,如果无权限,请用管理员的终端再次尝试。

在这里插入图片描述

启动好后:

在这里插入图片描述

点击上图出现的网址可以进入(如果要输入密码默认都是nacos):

在这里插入图片描述




Springboot 中引入

引入依赖管理

这个依赖管理包含了 Springboot 的版本,springcloud 的版本,springalibabacloud 的版本。引入依赖管理是便于后期加入依赖的时候不用关注版本本身,只需要把依赖引入就好了。

我这里 springboot 的版本是 2.6.11(请严格按照开始的那张图对应版本)

在你的 pom.xml 文件中引入:

<dependencyManagement>
    <dependencies>
        <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>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2021.0.4</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-alibaba-dependencies</artifactId>
            <version>2021.0.4.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>

</dependencyManagement>

引入使用的依赖

我们是要使用的是 nacos 的服务注册,所以我们引入 discovery 的启动包,以及要想启动我们要引入 springcloud 的 bootstrap 包。

<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-bootstrap</artifactId>
</dependency>

在 application.yml 中填写配置

这里主要就是配置 nacos 服务器的地址,以及配置我们整个服务的名称。

spring:
  application:
    name: nacos-config-example
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

在启动类中添加允许发现的注解

其实就是注解 @EnableDiscoveryClient

直接看代码

@SpringBootApplication
@EnableDiscoveryClient
public class UserServiceApplication {

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

}



然后重新启动就可以啦

在这里插入图片描述

说明:在SpringBoot 2.4.x的版本之后,对于bootstrap.properties/bootstrap.yaml配置文件(我们合起来成为Bootstrap配置文件)的支持,需要导入如下的依赖。由于SpringCloud 2020.*以后的版本默认禁用了bootstrap,导致读取配置文件时读取不到该属性。

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

使用

注意:在 Spring Cloud Nacos 2021 以后就没有在默认使用 Ribbon 作为负载均衡器了,而且在Cloud官网中也推荐使用LoadBalancer 作为负载均衡器,对此先引入依赖:

<!--loadbalancer负载均衡器-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency> 

建立一个类似的工程,前面的引入过程一致。

最终在使用的时候如下:

package com.xwhking.orderservice.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
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;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;

@RestController
@RequestMapping("/order")
public class TestController {
    @Resource
    private RestTemplate restTemplate;


    @Resource
    private LoadBalancerClient loadBalancerClient;

    @GetMapping("/test/{id}")
    public String getTest(@PathVariable("id") String id){
        String url = "http://userservice/user/getOne/"+id;
        ServiceInstance serviceInstance = loadBalancerClient.choose("userservice");
        url = serviceInstance.getUri().toString()+"/user/getOne/"+id;
        String result1 = restTemplate.getForObject(url, String.class);
        return result1+"\n";
    }
}

好文推荐:SpringBoot2.6.11 + Spring Cloud Alibaba + Nacos 搭建 - MyDistance - 博客园 (cnblogs.com)

如果有这些错误提示:

  • org.springframework.cloud.commons.ConfigDataMissingEnvironmentPostProcessor$ImportException: No spring.config.import set
  • 或者启动不了,按这篇文章来一遍,几乎都可以啦

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

idea一些报错

java: 非法字符: \ufeff 使用IDEA修改文件编码 在IDEA右下角&#xff0c;将编码改为GBK&#xff0c;再转为UTF-8&#xff0c;重新启动项目。具体步骤如下&#xff1a; 在IDEA右下角找到UTF-8字样的编码格式设计项&#xff0c;点击选择第一项GBK&#xff0c;然后Convert&#xf…

Java实现机考程序界面

机考界面如下&#xff08;单选题&#xff09;&#xff0c;上方是题目状态&#xff0c;下方是题目&#xff0c;1/5/1是已做题目数量、总共题目数量和答对题目数量。 再看一下多选题的界面。 判断题的界面。 回答正确时的反馈&#xff0c;会给出用时。 回答错误时的反馈&#xff…

PaddleDetection系列2--NCCL安装及测试

NCCL安装及测试 1 系统信息查看1.1 查看本机的操作系统和位数信息&#xff1a;1.2 确认处理器架构1.3 确认cuda版本 2 NCCL安装2.1 根据上面的系统架构以及CUDA版本&#xff0c;进入[官网](https://developer.nvidia.com/nccl/nccl-download)下载匹配的nccl&#xff0c;若想获取…

百岁时代即将来临,原知因成为消费新潮流

什么叫长寿时代?泰康保险首席执行官陈东升指出&#xff1a;长寿时代&#xff0c;就是百岁人生即将来临&#xff0c;人人带病长期生存。而在这个时代&#xff0c;人类最大的变化在于“生命尺度的改变”&#xff0c;比如过去20岁是年轻人&#xff0c;40岁中年人&#xff0c;60岁…

从零开始:VuePress2 + GitHub Pages 搭建你的第一个免费博客网站

可能你也想拥有一个属于自己的博客网站&#xff0c;但是自己搭个博客网站不知道从何下手&#xff0c;而且还需要租个云服务器&#xff0c;虽然一个月只需几十块钱&#xff0c;但是我们的博客网站是要长期维护的&#xff0c;日积月累也要不少钱呢。 现在我就教你用 VuePress2 …

【C语言:动态内存管理】

文章目录 前言1.malloc2.free3.calloc4.realloc5.动态内存常见错误6.动态内存经典笔试题分析7.柔性数组8.C/C中的内存区域划分 前言 文章的标题是动态内存管理&#xff0c;那什么是动态内存管理&#xff1f;为什么有动态内存管理呢&#xff1f; 回顾一下以前学的知识&#xff…

Linux_Ubuntu 系统入门

Ubuntu 系统是和 Windows 系统一样的大型桌面操作系统&#xff0c;因此功能非常强大。 本节的目的是掌握后续嵌入式开发所需的 Ubuntu 基本技能&#xff0c;比如系统的基本设置、常用的 shell 命令、vim 编译器的基本操作等等…… Ubuntu 的图形化界面操作和 Windows 下基本一致…

Proxmox创建Windows虚拟机

文章目录 下载ISO安装文件上传 下载ISO安装文件 下载地址&#xff1a;https://www.xitongzhijia.net/ 也可去官网进行下载 上传 将下载的ISO文件上传到Proxmox 选择ISO文件进行上传 上传后再ISO镜像中可以看到安装文件 点击创建虚拟机 填写名称&#xff0c;不能填写中文 镜…

程序员的养生之道:延寿健康的十大秘诀(下)

程序员的养生之道&#xff1a;延寿健康的十大秘诀&#xff08;上&#xff09;-CSDN博客 目录 6. 心理调节&#xff0c;减轻压力 6.1 程序员常见的心理问题 6.2 压力管理的重要性 6.3 放松技巧与应对策略 6.4 积极心态与心理健康 7. 正确坐姿&#xff0c;保护颈椎腰椎 …

SpringBoot之实体参数的详细解析

1.3 实体参数 在使用简单参数做为数据传递方式时&#xff0c;前端传递了多少个请求参数&#xff0c;后端controller方法中的形参就要书写多少个。如果请求参数比较多&#xff0c;通过上述的方式一个参数一个参数的接收&#xff0c;会比较繁琐。 此时&#xff0c;我们可以考虑…

ActiveMQ使用指南

介绍 ActiveMQ是Apache开源组织旗下的一个项目&#xff0c;是一个流行的开源消息中间件。它完全支持JMS1.1和J2EE1.4规范的JMS Provider实现&#xff0c;并且是纯Java开发的产品。ActiveMQ支持多种语言编写客户端&#xff0c;包括C,C,C#,Perl,PHP,Ruby,Ajax等&#xff0c;同时…

K8S(四)—pod详解

目录 pod介绍Pod的概念&#xff1a;Pod的特性&#xff1a;Pod的配置&#xff1a;Pod的控制&#xff1a;示例 YAML 文件&#xff1a; pod启动流程问题 两种方式启动镜像的升级和回滚更新 Deployment&#xff1a;回滚检查 Deployment 历史版本回滚到之前的修订版本缩放 Deploymen…

【C语言宝库】- 操作符|详解进制转换|计算机小白必备技能(上)

&#x1f308;个人主页: Aileen_0v0 &#x1f525;系列专栏:C语言学习 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 进制 定义 基本原理 转换方式 常见的进制转换 二进制和进制的转换 二进制转十进制 十进制转二进制 &#xff08;1&#xf…

Nginx核心策略配置详解(反向代理、轮询配置、动静分离)

Nginx反向代理配置 上图需求二配置方式&#xff1a; 1.配置好JDk 2.部署tomcat&#xff0c;需要复制tomcat 修改server.xml文件等。 保持默认监听8080&#xff0c;8081端⼝ 3.修改nginx配置&#xff0c;并重新加载 nginx 安装有两种方式一种是联网一键下载&#xff0c;Nginx…

C++初阶(十五)Stack和Queue

文章目录 一、Stack的模拟实现二、Queue的模拟实现三、容器适配器1、什么是容器适配器2、STL标准库中stack和queue的底层结构3、 deque的简单介绍(了解)1、deque的原理介绍2、deque的缺陷 4、为什么选择deque作为stack和queue的底层默认容器 一、Stack的模拟实现 #include<…

静态SOCKS5:了解基本概念和协议

SOCKS5是一种网络协议&#xff0c;是SOCKS协议的第五个版本&#xff0c;它提供了一种安全的、加密的网络连接&#xff0c;可以帮助用户在互联网上保护自己的隐私和安全。静态SOCKS5是指使用静态IP地址和端口的SOCKS5代理服务器&#xff0c;这种代理服务器可以提供更稳定、更快速…

idea SpringBoot target 不自动更新,不自动生成问题

如题,为什么不自动更新? 我使用Maven中的insert命令生成了target文件夹,但是,修改了代码重新启动还是不会自动更新,检查了文件,发现了resources文件夹是一个普通文件夹,没有标记为项目资源文件夹,所以idea不会给你自动生成的

css 纯样式实现绘出进度条

效果&#xff1a; css代码&#xff1a; .bar{height: 14px;width: 100%;font-size: 10px;margin-top: 5px;background-color: #f5f5f5;}.bar::before{display: block;counter-reset: progress var(--precent); content: ;width: calc(1% * var(--precent));color: #fff;height:…

大数据机器学习深度解读决策树算法:技术全解与案例实战

大数据机器学习深度解读决策树算法&#xff1a;技术全解与案例实战 本文深入探讨了机器学习中的决策树算法&#xff0c;从基础概念到高级研究进展&#xff0c;再到实战案例应用&#xff0c;全面解析了决策树的理论及其在现实世界问题中的实际效能。通过技术细节和案例实践&…

JavaEE之多线程编程:2.创建线程及Thread类常见方法(超全!!!)

一、创建线程 Java中创建线程的写法有很多种&#xff01;&#xff01;&#xff01;这里介绍其中5种。 方法1&#xff1a;继承Thread类&#xff0c;重写run 创建一个类&#xff0c;让这个类继承自Thread父类&#xff0c;再重写我们的run方法就可以了。 使用Thread类&#xff…