【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();
    }
}

@Configuration,用於定義配置類,等價於<Beans></Beans>
@Bean等價於<Bean></Bean>
@ConfigurationProperties獲取配置在 application.properties 或 application.yml 文件中的參數值
@Primary,優先選擇,自動裝配時當出現多個Bean候選者時,被註解爲@Primary的Bean將作爲首選者
@RefreshScope,配置文件自動刷新

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章