如何在Spring Boot应用中使用Nacos实现动态更新数据源
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁
🦄 博客首页——猫头虎的博客🎐
🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐
🌊 《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大小厂~💐
🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥
文章目录
- 如何在Spring Boot应用中使用Nacos实现动态更新数据源
- 摘要
- 引言
- 步骤
- 1. 添加依赖
- 2. 配置Nacos
- 3. 配置数据源
- 4. 创建数据源的Bean
- 5. 监听配置变化
- 6. 在Nacos中配置数据源信息
- 总结
- 参考资料
- 原创声明
如何在Spring Boot应用中使用Nacos实现动态更新数据源
摘要
本文将介绍如何在Spring Boot应用中使用Nacos作为配置中心,实现动态更新数据源配置,以便在应用运行时动态更改数据库连接信息,而无需引入Spring Cloud。我们将讨论必要的依赖、配置步骤和示例代码。
引言
在微服务架构中,动态更新数据源配置对于应对不断变化的数据库连接信息非常重要。通常,Spring Cloud和Nacos一起使用以实现此目的。然而,有时候,您可能希望在不引入Spring Cloud的情况下实现此功能,以保持项目的轻量化或其他原因。
本文将向您展示如何使用Spring Boot和Nacos实现动态更新数据源配置。我们将通过以下步骤来实现这一目标:
- 添加依赖
- 配置Nacos
- 配置数据源
- 创建数据源的Bean
- 监听配置变化
- 在Nacos中配置数据源信息
我们将使用一个简单的示例来说明这些步骤。让我们开始吧!
步骤
1. 添加依赖
首先,确保您在项目的pom.xml
文件中添加了Nacos客户端和数据库驱动程序的依赖:
<dependencies><!-- Spring Boot Starter for Nacos --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- 数据库依赖,例如MySQL --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>
</dependencies>
2. 配置Nacos
在application.properties
或application.yml
文件中配置Nacos的连接信息:
spring:cloud:nacos:discovery:server-addr: localhost:8848config:server-addr: localhost:8848group: DEFAULT_GROUP
3. 配置数据源
配置数据源,包括数据库连接信息和连接池设置。在application.properties
或application.yml
中添加如下配置:
spring:datasource:url: jdbc:mysql://localhost:3306/mydbusername: your_usernamepassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Driverhikari:maximum-pool-size: 10
4. 创建数据源的Bean
创建一个数据源Bean,这里使用HikariCP作为连接池:
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;@Configuration
public class DataSourceConfig {@Beanpublic DataSource dataSource() {return DataSourceBuilder.create().build();}
}
5. 监听配置变化
创建一个监听Nacos配置变化的Bean,以便在配置发生变化时重新加载数据源配置:
import com.alibaba.nacos.api.config.annotation.NacosConfigListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import javax.sql.DataSource;@Configuration
public class DataSourceRefreshConfig {private final DataSource dataSource;@Autowiredpublic DataSourceRefreshConfig(DataSource dataSource) {this.dataSource = dataSource;}@NacosConfigListener(dataId = "your-data-id", groupId = "your-group-id")public void onDataSourceConfigChanged(String newConfig) {// 在配置变化时重新加载数据源配置// 解析 newConfig 并更新数据源连接信息}
}
6. 在Nacos中配置数据源信息
在Nacos配置中心中创建相应的配置,例如:
# your-data-id.yaml
spring:datasource:url: jdbc:mysql://new-database-url:3306/mydbusername: new_usernamepassword: new_passworddriver-class-name: com.mysql.cj.jdbc.Driverhikari:maximum-pool-size: 10
总结
通过使用Spring Boot和Nacos,我们可以实现动态更新数据源配置,而无需引入Spring Cloud。这种方法允许我们在运行时更改数据库连接信息,从而使我们的应用程序更加灵活和适应变化。
在实际项目中,请根据您的需求和数据库连接池的选择来调整配置和代码。通过这个方法,您可以轻松地实现动态数据源配置。
参考资料
- Spring Cloud Alibaba Nacos
- Spring Boot
- HikariCP - A solid, high-performance, JDBC connection pool
- Nacos - An easy-to-use dynamic service discovery, configuration and service management platform
原创声明
======= ·
- 原创作者: 猫头虎
作者wx: [ libin9iOak ]
学习 | 复习 |
---|---|
✔ |
本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。
作者保证信息真实可靠,但不对准确性和完整性承担责任。
未经许可,禁止商业用途。
如有疑问或建议,请联系作者。
感谢您的支持与尊重。
点击
下方名片
,加入IT技术核心学习团队。一起探索科技的未来,共同成长。
相关文章:

如何在Spring Boot应用中使用Nacos实现动态更新数据源
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
代码随想录算法训练营day1~18总结
时间、空间复杂度,解题过程中运用的函数补充说明 数组 day1: http://t.csdn.cn/dBSgY day2: http://t.csdn.cn/JTDvH 数组总结 链表 day3:http://t.csdn.cn/mJx9V day4:http://t.csdn.cn/qiGqz 链表总结 哈希表 day6:…...

【炼气境】HashMap原理以及如何使用
系列文章目录 文章目录 系列文章目录前言1、数据结构2、工作原理3、当两个对象的 hashCode 相同会发生什么?4、你知道 hash 的实现吗?为什么要这样实现?5、为什么要用异或运算符?6、HashMap 的 table 的容量如何确定?l…...

QT基础教程之七Qt消息机制和事件
QT基础教程之七Qt消息机制和事件 事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件。一些事件在对用户操作做出响应时发出,…...

Python入门自学进阶-Web框架——40、redis、rabbitmq、git——3
git,一个分布式的版本管理工具。主要用处:版本管理、协作开发。 常见版本管理工具: VSS —— Visual Source Safe CVS —— Concurrent Versions System SVN —— CollabNet Subversion GIT GIT安装:下载安装文件:…...

skywalking agent监控java服务
一、前言 skywalking agent可以监控的服务类型有多种,python、go、java、nodejs服务等都可以监控,现在通过java服务来演示skywalking agent的使用,并且是使用容器的方式实现 二、部署skywalking agent监控 需要注意,skywalking…...
LARGE LANGUAGE MODEL AS AUTONOMOUS DECISION MAKER
本文是LLM系列文章,针对《LARGE LANGUAGE MODEL AS AUTONOMOUS DECISION MAKER》的翻译。 作为自主决策者的大语言模型 摘要1 引言2 前言3 任务形式化4 方法5 实验6 相关工作7 结论 摘要 尽管大型语言模型(LLM)表现出令人印象深刻的语言理解…...

【Unity-Cinemachine相机】Cinemachine Brain属性详解
在Package Manager中下载Cinemachine 创建一个Virtual Camera,然后会发现Main Camera后面多出了个标志,而且属性也不能再修改了 因为绑定了CinemachineBrain,它会读取场景中某个虚拟相机的配置,并以此配置来控制相机的行为&#x…...

使用Python对数据的操作转换
1、列表加值转字典 在Python中,将列表的值转换为字典的键可以使用以下代码: myList ["name", "age", "location"] myDict {k: None for k in myList} print(myDict) 输出: {name: None, age: None, loca…...

MyBatis-Plus —— 初窥门径
前言 在前面的文章中荔枝梳理了MyBatis及相关的操作,作为MyBatis的增强工具,MyBatis-Plus无需再在xml中写sql语句,在这篇文章中荔枝将梳理MyBatis-Plus的基础知识并基于SpringBoot梳理MyBatis-Plus给出的两个接口:BaseMapper和ISe…...

音频——I2S 标准模式(二)
I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S format时序图逻辑分析仪抓包 I2S format 飞利浦 (I2S) 标准模式 数据在跟随 LRCLK 传输的 BCLK 的第二个上升沿时传输 MSB,其他位一直到 LSB 按顺序传传输依…...

Python语音识别处理详解
概要 人们对智能语音助手的需求不断提高,语音识别技术也随之迅速发展。在这篇文章中,我们将介绍如何使用Python的SpeechRecognition和pydub等库来实现语音识别和处理,从而打造属于自己的智能语音助手。 1. 什么是语音识别? 语音…...

【小吉送书—第一期】Kali Linux高级渗透测试
文章目录 🍔前言🛸读者对象🎈本书资源🎄彩蛋 🍔前言 对于企业网络安全建设工作的质量保障,业界普遍遵循PDCA(计划(Plan)、实施(Do)、检查&#x…...
服务器允许ssh登录root
用vim打开/etc/ssh/sshd_config sudo vim /etc/ssh/sshd_config将sshd_config中的PermitRootLogin属性改为yes ... PermitRootLogin yes ...重启sshd服务 sudo service sshd restart...

【微服务部署】三、Jenkins+Maven插件Jib一键打包部署SpringBoot应用Docker镜像步骤详解
前面我们介绍了K8SDockerMaven插件打包部署SpringCloud微服务项目,在实际应用过程中,很多项目没有用到K8S和微服务,但是用到了Docker和SpringBoot,所以,我们这边介绍,如果使用Jenkinsjib-maven-plugin插件打…...

Ansible学习笔记9
yum_repository模块: yum_repository模块用于配置yum仓库的。 测试下: [rootlocalhost ~]# ansible group1 -m yum_repository -a "namelocal descriptionlocalyum baseurlfile:///mnt/ enabledyes gpgcheckno" 192.168.17.106 | CHANGED &g…...

Ubuntu22.04安装Mongodb7.0
Ubuntu安装Mongodb 1.平台支持2.安装MongoDB社区版2.1导入包管理系统使用的公钥2.2为MongoDB创建列表文件2.3重新加载本地包数据库2.4安装MongoDB包1.安装最新版MongoDB2.安装指定版MongoDB 3.运行MongoDB社区版1.目录2.配置文件3.初始化系统4.启动MongoDB5.验证MongoDB是否成功…...
Oracle中序列删除的正确语句(oracle删除序列语句)
Oracle中序列删除的正确语句 Oracle 是由世界上最大的软件公司 Oracle Corporation 提供的关系型数据库管理系统,拥有广泛的应用和功能,如存储过程、触发器、视图、序列以及其他的复杂的特性,能够满足丰富的业务需求。本文主要研究Oracle中序…...
ChatGPT AI在线免费体验
🤖 与ChatGPT亲密接触 🤖 ChatGPT!它就是一款强大的聊天型人工智能模型,可以与你进行各种有趣的对话,就像我们在这里一样。不论你想聊天、提问、寻求建议,还是只是想找个伙伴一起闲聊,ChatGPT都…...

CSS中如何实现文字渐变色效果(Text Gradient Color)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 文字渐变色效果(Text Gradient Color)⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

麒麟系统使用-进行.NET开发
文章目录 前言一、搭建dotnet环境1.获取相关资源2.配置dotnet 二、使用dotnet三、其他说明总结 前言 麒麟系统的内核是基于linux的,如果需要进行.NET开发,则需要安装特定的应用。由于NET Framework 是仅适用于 Windows 版本的 .NET,所以要进…...