qq_41897817 2022-02-18 11:49 采纳率: 50%
浏览 125
已结题

使用nacos配置中心存放配置文件,更新配置文件后程序监听到更新事件,但程序加载的配置信息还是旧的

现在的需求是修改nacos上配置的数据源密码、用户名之类的,
想在程序不重启的情况下加载到配置文件的信息。

有老哥做过类似的吗?网上找的对不上需求

img

  • 写回答

2条回答 默认 最新

  • 在自我救赎中成长 2022-02-18 13:38
    关注

    写个配置类,就可以通过nacos上的配置动态修改数据源了

    @Configuration
    @RefreshScope
    @Data
    public class DruidConfiguration {
    
        @Value("${spring.datasource.druid.url}")
        private String url;
    
        @Value("${spring.datasource.druid.username}")
        private String username;
    
        @Value("${spring.datasource.druid.password}")
        private String password;
    
        @Value("${spring.datasource.druid.driver-class-name}")
        private String driverClassName;
    
        @Bean(name="datasource")
        @RefreshScope
        public DruidDataSource dataSource()
        {
            DruidDataSource datasource = new DruidDataSource();
            System.out.println(url);
            datasource.setUrl(this.url);
            datasource.setUsername(username);
            datasource.setPassword(password);
            datasource.setDriverClassName(driverClassName);
            return datasource;
        }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • a1767028198 2022-02-18 12:28
    关注

    并不是所有配置类运行时都让你动态修改的,像HikariConfig.setJdbcUrl,就加了限制,如果只是一些业务参数,动态加载是没问题的,通过使用 ConfigurationProperties + RefreshScope,是可以动态刷新的

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月2日
  • 已采纳回答 2月22日
  • 修改了问题 2月18日
  • 修改了问题 2月18日
  • 展开全部

悬赏问题

  • ¥30 android百度地图SDK海量点显示标题
  • ¥15 windows导入environment.yml运行conda env create -f environment_win.yml命令报错
  • ¥15 这段代码可以正常运行,打包后无法执行,在执行for内容之前一直不断弹窗,请修改调整
  • ¥15 C语言判断有向图是否存在环路
  • ¥15 请问4.11到4.18以及4.27和4.29公式的具体推导过程是怎样的呢
  • ¥20 将resnet50中的卷积替换微ODConv动态卷积
  • ¥15 通过文本框输入商品信息点击按钮将商品信息列举出来点击加入购物车商品信息添加到表单中
  • ¥100 这是什么压缩算法?如何解压?
  • ¥20 upload上传实验报错500,如何解决?(操作系统-windows)
  • ¥15 谁知道 ShaderGraph 那个节点可以接入 Particle System -> Custom Data