当前位置: 首页 > news >正文

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

目录

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/apicustom: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 IDcloud:nacos:config:enabled: trueserver-addr: legrand.nacos.com:8848  # nacos 地址端口file-extension: yml  # 指定文本后缀namespace: dev-local   # nacos 命名空间group: DEFAULT_GROUP   # nacos Grouprefresh-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 {@Autowiredprivate 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 IDcloud:nacos:config:enabled: trueserver-addr: legrand.nacos.com:8848  # nacos 地址端口file-extension: yml  # 指定文本后缀namespace: dev-local   # nacos 命名空间(修改这里)group: DEFAULT_GROUP   # nacos Grouprefresh-enabled: true

6、总结

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Mysql 视图存储过程触发器
  • TCP客户端编码和解码处理:发送和接收指定编码消息
  • 速通GPT:《Improving Language Understanding by Generative Pre-Training》全文解读
  • 【字幕】恋上数据结构与算法之012复杂度07leetcode
  • 小程序——生命周期
  • 【Unity基础】如何选择脚本编译方式Mono和IL2CPP?
  • 数据驱动的生态系统架构:打造智能化管理与业务增长的未来战略
  • 强烈建议!所有Python基础差的同学,死磕这本64页的背记手册
  • go语言后端开发学习(七)——如何在gin框架中集成限流中间件
  • 系统编程-初识MCU
  • 滚雪球学SpringCloud[2.2]:Consul与Zookeeper服务注册
  • 【AI大模型】Kimi API大模型接口实现
  • 【python计算机视觉编程——9.图像分割】
  • 从头开始学MyBatis—02基于xml和注解分别实现的增删改查
  • C++——⼆叉搜索树
  • 10个最佳ES6特性 ES7与ES8的特性
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CSS3 变换
  • gulp 教程
  • IDEA 插件开发入门教程
  • JS基础之数据类型、对象、原型、原型链、继承
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • windows下mongoDB的环境配置
  • Yeoman_Bower_Grunt
  • 百度小程序遇到的问题
  • 番外篇1:在Windows环境下安装JDK
  • 技术:超级实用的电脑小技巧
  • 如何用vue打造一个移动端音乐播放器
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微信开放平台全网发布【失败】的几点排查方法
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​Java基础复习笔记 第16章:网络编程
  • ​ssh免密码登录设置及问题总结
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • ‌JavaScript 数据类型转换
  • $(selector).each()和$.each()的区别
  • (3)(3.5) 遥测无线电区域条例
  • (7)摄像机和云台
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (全注解开发)学习Spring-MVC的第三天
  • (五)网络优化与超参数选择--九五小庞
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET Project Open Day(2011.11.13)
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .Net多线程总结
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • [000-01-022].第03节:RabbitMQ环境搭建
  • [17]JAVAEE-HTTP协议
  • [Android]RecyclerView添加HeaderView出现宽度问题