springboot如何解决nacos配置中心动态修改DruidDataSource的配置后动态刷新

在nacso中配置了关于DruidDataSource的配置如下:

 在spring项目的bootstrap.yml中配置如下:

 在项目中编写手动注入DruidDataSource的代码如下:

启动项目后,再nacos中更改druid的url参数,但是在IDEA的控制台却没有打印

 于是我去查看spring.cloud.nacos.config.shared-configs的源码,发现shared-configs的参数是个接收NacosConfigProperties.Config的数组,然后再查看Config类

原来如此,就是说我们给shared-config传入的config对象参数只有dataId,而另外两个值是读取的默认值,最最重要的事refresh的默认值是false,false表示默认是不支持动态刷新的,因此,bootstrap的配置要改变一下

 并且要在创建DataSource的配置类中加上@RefreshScope注解

方法上也要加@RefreshScope,而且还要加@Primary

 加在类上面的@RefreshScope会监听配置中心文件中关于DataSource的参数变化,修改则实现刷新,而加在方法上的@RefreshScope会刷新spring容器中的DataSource这个Bean。

@Primary注解表示spring会优先IOC此DataSource,使得spring容器能够优先托管自定义的DataSource注入。

一切配置完成后,就能够实现动态刷新DataSource啦,其实不只是修改DataSource的时候要注意,其他任何需要动态修改共享配置文件的时候,都要在bootstrap中填上refresh=false这个条件,不然就会读取默认值。希望此篇文档对你能有帮助,仅供参考,谢谢!

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot 集成 Nacos 配置中心是为了提供一个动态和分布式的应用配置管理解决方案。Nacos 是阿里巴巴开源的一个配置中心,用于存储、管理和分发配置信息。以下是集成 Nacos 配置中心的基本步骤: 1. 添加依赖:在你的 Maven 或 Gradle 项目中添加 Spring Cloud Config 和 Nacos 的依赖。 Maven: ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-nacos-config</artifactId> </dependency> ``` Gradle: ```groovy implementation 'org.springframework.cloud:spring-cloud-starter-config' implementation 'com.alibaba.cloud:spring-cloud-alibaba-nacos-config' ``` 2. 配置客户端:在 `application.yml` 或 `application.properties` 文件中配置 Nacos 配置中心的信息,包括地址、命名空间(namespace)等。 ```yaml spring: cloud: config: server: nacos: uri: http://localhost:8848 name-spaces: default username: admin password: admin ``` 3. 配置 Nacos 配置源:使用 `@EnableConfigServer` 注解启用配置服务器功能,并且可以配置是否扫描特定目录或包下的配置文件。 4. 使用 ConfigClient 注解:在需要注入配置的地方使用 `@ConfigurationProperties` 注解从 Nacos 中获取配置。 例如: ```java @Configuration @ConfigurationProperties(prefix = "app") public class AppConfig { private String property1; // getters and setters } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值