springboot 整合 nacos 配置实现多个环境不同配置

news2024/11/22 11:53:07

目录

1、描述

2、Nacos服务端安装

3、创建dataId 配置中心

4、创建一个springboot 项目

5、重点:不同的springboot 读取不同application

6、总结


 

1、描述

一个项目一般会有中心配置文件,现在简单上手主流有Apollo,nacos config ,从性能对比可知,nacos 相比于Apollo 更高效率,更好

2、Nacos服务端安装

  • 最新版本下载地址: https://github.com/alibaba/nacos/releases

  • 访问: http://127.0.0.1:8848/nacos

  • 用户名/密码:nacos/nacos

  • 由于git下载有点慢提供已经打包好的下载文件:https://download.csdn.net/download/wcy18818429914/15679179

  • 启动nacos 之前需要修改jar里面的数据连接和执行SQL 

  修改application 数据库连接:

 在 nacos-server-1.1.4\nacos\target\nacos-server.jar ,用解压工具打开,找到nacos-default.properties ,修改里面的数据库连接就可以

    将里面的SQL 执行到部署的服务器上

如果是window 双击启动bin 里面的 startup.cmd

如果是linux 则进入bin 执行:sh startup.sh

输入 http://localhost:8848/nacos/index.html#/login , 输入 用户名/密码:nacos/nacos ,有以下图像就代表成功了

3、创建dataId 配置中心

其中Data ID 必需要跟代码的dataId 保存一致,group 可以默认就可以

在nacos 平台创建一个YAML配置:

命名空间:dev-local 

Data ID:com-member-service.yml

Group:DEFAULT_GROUP

配置内容为:

server:
  servlet:
    context-path: /member/api

custom:
  test:
    data: 用于测试的没什么用

4、创建一个springboot 项目

项目使用的是bootstrap 进行配置

(1)引入mevan 包:

      <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            <version>2.2.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
            <version>3.0.4</version>
        </dependency>

(2)创建bootstrap.yml 引入读取配置中心

server:
  port: 9087   #端口号
spring:
  application:
    name: com-member-service  # nacos 平台配置的名称Data ID
  cloud:
    nacos:
      config:
        enabled: true
        server-addr: legrand.nacos.com:8848  # nacos 地址端口
        file-extension: yml  # 指定文本后缀
        namespace: dev-local   # nacos 命名空间
        group: DEFAULT_GROUP   # nacos Group
        refresh-enabled: true

其中dataId 必需跟nacos 客户创建的dataID 一致

(3)创建controller ,引入获取nacos 的配置

package com.example.demo.controller;

import com.example.demo.service.AbstractService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @project: demo
 * *
 * @className: AbstractController
 * *
 * @description:
 **/
@RestController
@RequestMapping("/abstract")
public class AbstractController {

    @Autowired
    private AbstractService abstractService;

    @RequestMapping("/test")
    public String test(){
        return abstractService.test();
    }

    @Value("${custom.test.data}")
    private String cloud_secret_key;
    @RequestMapping("/nacos")
    public String nacos(){
        return cloud_secret_key;
    }
}

(5)启动服务:会发现端口号是8099,而且输入http://localhost:9087/member/api/abstract/nacos是 用于测试的没什么用,说明基本成功

5、重点:不同的springboot 读取不同application

如果我们按以上的操作,只能读取到一个nacos配置文件的,但是对于很多程序来说,有开发环境,测试环境,正式环境等等,这样的话就不能操作了。但是我发现nacos 还有个 空间namespace 可以用,那么我们可不可以用namespace

来区别不同的配置呢?

(1)在nacos 平台创建2个命名空间,test,dev

(2)在nacos  配置不同命名空间的值,在dev,test 分别创建 member ,里面的内容对应test.properties-version=testing_nacos_dev ,test.properties-version=testing_nacos_test

(4)在 springboot 的bootstrap.yml选择对应的启动配置spring.cloud.nacos.config.namespace,分别选择dev 和 test

server:
  port: 9087   #端口号
spring:
  application:
    name: com-member-service  # nacos 平台配置的名称Data ID
  cloud:
    nacos:
      config:
        enabled: true
        server-addr: legrand.nacos.com:8848  # nacos 地址端口
        file-extension: yml  # 指定文本后缀
        namespace: dev-local   # nacos 命名空间(修改这里)
        group: DEFAULT_GROUP   # nacos Group
        refresh-enabled: true

6、总结

通过以上学习,可以简单的用nacos 做配置中心。

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

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

相关文章

python的流程控制语句之制作空气质量评估系统

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

VideoSRT 注册邀请码,填写邀请码免费获得3天专业版授权

邀请码&#xff1a;aN2M40 填写邀请码免费获得3天专业版授权

【Python刷题】Atcoder Beginner Contest 371

目录 A - Jiro题目描述算法思路代码实现 B - Taro题目描述算法思路代码实现 D - 1D Country题目描述算法思路代码实现 E - I Hate Sigma Problem题目描述算法思路代码实现 A - Jiro 题目描述 有三个人&#xff0c;知道他们之中每两个人的年龄关系&#xff0c;输出年龄第二大的…

rust GUI框架Tauri入门——基于vanilla.js

文章目录 Tauri介绍Vite开始创建 Rust 项目 调用指令window.__TAURI_INVOKE__.invoke is undefined 问题参考资料JavaScript 模块VueVue RouteviteNuxt Tauri介绍 Tauri是一款用Rust构建的开源框架&#xff0c;用于创建轻量级、安全且高效的桌面应用程序。它将Rust的强大功能与…

Qt-QProgressBar显示类控件(27)

目录 描述 相关属性 使用 引入头文件机制 作用 描述 就是一个进度条&#xff0c;如下这个样子 相关属性 这里是一些属性 minimum进度条最⼩值maximum进度条最⼤值value进度条当前值 alignment ⽂本在进度条中的对⻬⽅式&#xff1a; • Qt::AlignLeft :左对⻬ • Qt::…

[Python学习日记-21] Python 中的字符编码(上)

[Python学习日记-21] Python 中的字符编码&#xff08;上&#xff09; 简介 ASCII 码 字符编码中的断句 GB2312 和 GBK 简介 在编程之路上&#xff0c;如果你不把编码问题搞清楚&#xff0c;那么它将像幽灵一般纠缠你整个职业生涯&#xff0c;各种灵异事件会接踵而来&#…

除了字符串前导的*号之外,将串中其它*号全部删除

要求 假定输入的字符串中只包含字母和*号。请编写函数fun&#xff0c;它的功能是:除了字符串前导的*号之外&#xff0c;将串中其它*号全部删除。在编写函数时&#xff0c;不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。 例如&#xff0c;字符串中的内容为:-**…

文件格式转换:EXCEL和CSV文件格式互相转换

目录 1.EXCEl和CSV文件格式互相转换1.1首先安装所需的Python包1.2excel转换为csv代码如下:1.3csv转换为excel代码如下:由于excel文件在数学建模数据处理当中的局限性,我们通常把excel文件转换为csv文件来处理,下面是相关的代码,我直接封装成函数,你们直接调用即可,我会添…

Selenium基础入门:环境搭建、浏览器驱动配置及基本使用方法

目录 引言 一、Selenium环境搭建 1.1 Python环境准备 1.1.1 下载并安装Python 1.1.2 安装pip 1.2 Selenium库安装 1.3 浏览器驱动安装 1.3.1 ChromeDriver 1.3.2 GeckoDriver&#xff08;Firefox&#xff09; 1.3.3 其他浏览器驱动 1.4 IDE和插件&#xff08;可选&a…

免费AI播客生成:notebooklm可以生成播客的两个发言人谈论的内容,从各种来源如研究论文、文章

参考&#xff1a; https://notebooklm.google.com/ 可以上传文章链接&#xff0c;ai自动生成播客两人对话&#xff1a; 另外notebooklm他本身也是个rag知识库对话&#xff0c;可以直接聊天框对话

CorrMatch复现

复现结果–Full&#xff1a;81.78327847863439&#xff0c;成功 U2PL’s splits计算量太大&#xff0c;不建议复现

Ubuntu 20.04 解决 nvidia-smi 出错问题

目录 一、初始问题 二、解决方法 2.1 法一 2.2 法二 三、新的问题 3.1 解决方案 3.2 进一步解决 3.3 最后解决 一、初始问题 今天要在本机上装个环境时&#xff0c;运行了一下 nvidia-smi 突然遇到一个问题&#xff1a; Failed to initialize NVML: Driver/library ver…

Qt_按钮类控件

目录 1、QAbstractButton 2、设置带图标的按钮 3、设置带有快捷键的按钮 4、QRadioButtion&#xff08;单选按钮&#xff09; 4.1 QButtonGroup 5、QCheckBox 结语 前言&#xff1a; 按钮类控件是Qt中最重要的控件类型之一&#xff0c;该类型的控件可以通过鼠标的点击…

了解线程池

引出线程池&#xff1a; 假设小编是一个女生&#xff0c;小编处了一个对象&#xff0c;但是某一天小编不想和这个男生处对象了&#xff0c;但是小编还是想和别的男生处对象的&#xff0c;于是现在我就面临两个问题&#xff1a;一、怎么跟现任分手 二、开始物色新的对象&#…

软件安装攻略:Sublime Text 下载安装和使用教程

Sublime Text 下载安装和使用教程 Sublime Text是一个流行的跨平台文本编辑器&#xff0c;它具有以下一些主要功能和特点&#xff1a; &#xff08;1&#xff09;简洁的界面和快速的速度&#xff1a;Sublime Text拥有简约干净的界面&#xff0c;启动和响应速度很快。 &#…

Visual Studio打开项目的一些小技巧

Visual Studio(VS)是一款功能强大的集成开发环境&#xff0c;许多刚入门C/C的小白也会使用这款软件进行写代码&#xff0c;然而它的操作并不简单&#xff0c;下面将讲解一下VS打开项目文件的一些小技巧。 目录 &#x1f381;创建空项目 ❤️①点击“创建新项目” ❤️②点击“…

Unity中InputField一些属性的理解

先看代码&#xff1a; using UnityEngine; using UnityEngine.UI;public class TestInput : MonoBehaviour {[SerializeField]InputField inputField;void Start(){Debug.Log(inputField.text);Debug.Log(inputField.text.Length);Debug.Log(inputField.preferredWidth);Debug…

Netty笔记02-组件EventLoop

文章目录 EventLoop概述EventLoop 的概念EventLoop 的作用EventLoop 的生命周期EventLoopGroupEventLoop 的工作原理总结 代码示例&#x1f4a1; 优雅关闭演示 NioEventLoop 处理 io 事件解决work中的channel读操作耗费时间过长&#xff0c;影响其他channel(客户端)的问题&…

开源链动 2+1 模式 AI 智能名片与 S2B2C 商城小程序在用户运营中的应用

摘要&#xff1a; 本文深入探讨了用户运营中不同用户阶段的特点及策略&#xff0c;引入“开源链动 21 模式 AI 智能名片 S2B2C 商城小程序”&#xff0c;分析其在用户运营各个阶段的作用和价值&#xff0c;旨在为企业提供更高效的用户运营方案&#xff0c;实现用户价值的最大化…

Spring 框架——@Async 注解

目录 1.同步调用与异步调用1.1.同步调用1.2.异步调用1.3.总结 2.注解 Async 介绍2.1.用在方法上2.2.用在类上 3.使用演示3.1.在启动类或者配置类上增加 EnableAsync 注解3.2.在异步方法上增加 Async 注解3.3.调用异步方法3.4.测试3.5.其它说明 4.注意事项4.1.Async 注解失效的常…