SpringCloud運行時刷新數據源相關配置

數據庫的相關配置,通常來講是不會頻繁變的,特別是當數據庫鏈接使用的是域名而不是ip地址的時候,這樣即便ip地址變化了,也不影響業務系統。這裏呢,咱們講一下若是真的是無可奈何的時候,有沒有不重啓就能夠更改配置的方法。html

思路

有不少種方案,這裏咱們講一下基於SpringCloud的RefreshScope的方案。spring

數據庫配置實例

spring:
  datasource:
    platform: postgres
    url: jdbc:postgresql://192.168.99.100:5432/postgres
    driverClassName: org.postgresql.Driver
    username: postgres
    password: 123456
    validation-query: SELECT 1
    test-while-idle: true
    test-on-borrow: true

Java配置

@Configuration
public class DbConfig {

    @Bean
    @RefreshScope //refresh
    @Primary
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource dataSource() {
        return DataSourceBuilder.create().build();
    }
}

更新

調用一下服務的refresh端點就能夠了sql

curl -i -X POST http://localhost:9001/refresh

驗證

@Component
public class ScheduleTask {

    @Autowired
    UserRepository userRepository;

    @Scheduled(fixedDelay = 5*1000 /**ms**/,initialDelay = 5*1000)
    public void testDataSourceConn() {
        try{
            System.out.println("call jdbc");
            userRepository.findAll();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

這裏跑一個定時任務,不停地調用數據查詢方法,而後中途改下密碼,而後refresh一下,看是否報錯數據庫

doc

相關文章
相關標籤/搜索