SpringCloud|【SpringCloud】配置中心config动态刷新配置文件—更改数据库却没有得到实时变化怎么办

在上一篇博客中,已经很容易的获取到了配置文件的变化,只要配置文件发生变化,只要用POST方式访问下/actuator/bus-refresh,就刷新到改变了的新属性值。可是有一个地方比较特别,就是如果你改的是数据库,却丝毫没有效果,别的属性明明已经得到了改变,说明动态刷新配置文件是成功了的,那为什么偏偏只有关于数据库的并没有变化呢,明明已经换了数据库,值有所变化才对,但却还读的是改动之前的数据库。一开始的我,还以为是动态刷新配置文件没有实现呢,后来多次测试发现,动态刷新配置文件是成功的,自定义的配置属性ip一改,就能得到变化,只有数据库是怎么改到不变的,后来多次查证实践,发现关于数据库,需要单独写一个读取数据的配置类,每次刷新的时候重新获取数据源,就可以了
配置类如下

@Configuration public class DataSourceConfigure { @Bean @RefreshScope @Primary @ConfigurationProperties(prefix = "spring.datasource") public DataSource dataSource(DataSourceProperties properties){ System.out.println("执行了重新获取数据源"); return DataSourceBuilder.create(properties.getClassLoader()) .type(HikariDataSource.class) .driverClassName(properties.determineDriverClassName()) .url(properties.determineUrl()) .username(properties.determineUsername()) .password(properties.determinePassword()) .build(); } }

【SpringCloud|【SpringCloud】配置中心config动态刷新配置文件—更改数据库却没有得到实时变化怎么办】@Configuration,用于定义配置类,等价于
@Bean等价于
@ConfigurationProperties获取配置在 application.properties 或 application.yml 文件中的参数值
@Primary,优先选择,自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者
@RefreshScope,配置文件自动刷新

    推荐阅读