SpringBoot 통합 nacos 동적 리 셋 데이터 원본 의 실현 예시

머리말
프로젝트 가 필요 하기 때문에 프로젝트 운영 과정 에서 데이터 원본(즉,데이터 원본 의 열 업데이트)을 동적 으로 수정 할 수 있어 야 합 니 다.여 기 는 com.alibaba.druid.pool.druidDataSource 데이터 원본 을 예 로 들 면
STEP 1:DruidAbstractDataSource 클래스 재 작성
이 종 류 를 다시 쓰 는 이유:DruidDataSource 데이터 원본 이 초기 화 되면 데이터베이스 의 url 과 userName 을 다시 설정 할 수 없 기 때 문 입 니 다.

public void setUrl(String jdbcUrl) {
    if (StringUtils.equals(this.jdbcUrl, jdbcUrl)) {
      return;
    }
    //      ,          ,     
    // if (inited) {
    //   throw new UnsupportedOperationException();
    // }

    if (jdbcUrl != null) {
      jdbcUrl = jdbcUrl.trim();
    }

    this.jdbcUrl = jdbcUrl;

    // if (jdbcUrl.startsWith(ConfigFilter.URL_PREFIX)) {
    // this.filters.add(new ConfigFilter());
    // }
  }
  
  public void setUsername(String username) {
    if (StringUtils.equals(this.username, username)) {
      return;
    }
		//      ,          ,     
    // if (inited) {
    //   throw new UnsupportedOperationException();
    // }

    this.username = username;
  }
다시 쓸 때 패키지 경로 가 바 뀌 지 않 습 니 다.이런 종류의 로 딩 을 할 때 만 다시 쓴 클래스 를 우선 불 러 옵 니 다.
在这里插入图片描述
두 번 째 단계:동적 설정 으로 nacos 설정 정보 가 져 오기

package com.mp.demo.config;

import com.alibaba.druid.pool.DruidDataSource;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Slf4j
@Configuration
@RefreshScope
@Data
public class DruidConfiguration
{
  @Value("${spring.datasource.url}")
  private String dbUrl;

  @Value("${spring.datasource.username}")
  private String username;

  @Value("${spring.datasource.password}")
  private String password;

  @Value("${spring.datasource.driver-class-name}")
  private String driverClassName;

  @Bean
  @RefreshScope
  public DruidDataSource dataSource()
  {
    DruidDataSource datasource = new DruidDataSource();
    datasource.setUrl(this.dbUrl);
    datasource.setUsername(username);
    datasource.setPassword(password);
    datasource.setDriverClassName(driverClassName);
    return datasource;
  }
}
여기 주의 하 세 요.
STEP 3:데이터 원본 수 동 새로 고침

 @GetMapping("/refresh")
  public String refresh() throws SQLException
  {
    DruidDataSource master = SpringUtils.getBean("dataSource");
    master.setUrl(druidConfiguration.getDbUrl());
    master.setUsername(druidConfiguration.getUsername());
    master.setPassword(druidConfiguration.getPassword());
    master.setDriverClassName(druidConfiguration.getDriverClassName());
    master.restart();
    return userName + "<>" + jdbcUrl+"----------"+druidConfiguration.getDbUrl();
  }
원본 주소:https://gitee.com/jackson_hou/RefreshDataSource.git
SpringBoot 통합 nacos 동적 리 셋 데이터 원본 의 실현 예시 에 관 한 이 글 은 여기까지 소개 합 니 다.더 많은 SpringBoot nacos 동적 리 셋 데이터 원본 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 지원 바 랍 니 다!

좋은 웹페이지 즐겨찾기