在SpringBoot中利用nacos对数据源进行动态刷新

本文介绍了如何在SpringBoot应用中利用Nacos实现数据源的动态刷新。首先,通过重写DruidAbstractDataSource类以允许后期设置数据库连接信息。接着,配置数据源并从Nacos动态获取配置,确保数据源信息能随着Nacos的更新而更新。最后,通过在Controller层设置接口,当Nacos中的配置变化时,手动调用该接口来切换数据源。
摘要由CSDN通过智能技术生成

一、重写DruidAbstractDataSource类

这里为什么要重写这个类:因为DruidDataSource数据源在初始化后,就不允许再重新设置数据库的url和userName

注意:类所在的包名必须为 com.alibaba.druid.pool

 

public void setUrl(String jdbcUrl) {
if (StringUtils.equals(this.jdbcUrl, jdbcUrl)) {
return;

}

// 重写的时候,需要将这个判断注释掉,否则会报错

// if (inited) {
// throw new UnsupportedOperationException();

// }

if (jdbcUrl != null) {
jdbcUrl = jdbcUrl.trim();

}

this.jdbcUrl = jdbcUrl;

// if (jdbcUrl.startsWith(ConfigFilter.URL_PREFIX)) {
// this.filters.add(new ConfigFilter());

// }

}

public void setUsername(String username) {
if (StringUtils.equals(this.username, username)) {
return;

}

// 重写的时候,需要将这个判断注释掉,否则会报错

// if (inited) {
// throw new UnsupportedOperationException();

//
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot使用Nacos配置多个数据源的步骤如下: 1. 在Nacos控制台创建两个配置文件,分别对应两个数据源的配置信息。例如: ``` # 数据源1配置 datasource1.url=jdbc:mysql://localhost:3306/db1 datasource1.username=root datasource1.password=123456 # 数据源2配置 datasource2.url=jdbc:mysql://localhost:3306/db2 datasource2.username=root datasource2.password=123456 ``` 2. 在Spring Boot的配置文件引入Nacos配置心的依赖,并配置Nacos Server的地址和命名空间。 ``` spring.cloud.nacos.config.server-addr=localhost:8848 spring.cloud.nacos.config.namespace=your-namespace ``` 3. 创建两个数据源的配置类,分别读取对应的Nacos配置文件数据源配置信息。 ```java @Configuration @RefreshScope public class DataSource1Config { @Value("${datasource1.url}") private String url; @Value("${datasource1.username}") private String username; @Value("${datasource1.password}") private String password; @Bean(name = "dataSource1") public DataSource dataSource1() { return DataSourceBuilder.create() .url(url) .username(username) .password(password) .build(); } } @Configuration @RefreshScope public class DataSource2Config { @Value("${datasource2.url}") private String url; @Value("${datasource2.username}") private String username; @Value("${datasource2.password}") private String password; @Bean(name = "dataSource2") public DataSource dataSource2() { return DataSourceBuilder.create() .url(url) .username(username) .password(password) .build(); } } ``` 4. 在使用数据源的地方,通过@Qualifier注解指定对应的数据源。 ```java @Service public class UserService { @Autowired @Qualifier("dataSource1") private DataSource dataSource1; @Autowired @Qualifier("dataSource2") private DataSource dataSource2; // 使用dataSource1和dataSource2进行数据库操作 } ``` 5. 在Nacos控制台修改数据源配置后,使用@RefreshScope注解实现配置的动态更新。 ```java @RefreshScope @Configuration public class DataSource1Config { // ... } @RefreshScope @Configuration public class DataSource2Config { // ... } ``` 以上就是在Spring Boot使用Nacos配置多个数据源的步骤。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值