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

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

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

img

写个配置类,就可以通过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;
    }
}

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