欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot使用Nacos動態(tài)配置數(shù)據(jù)源的方法

 更新時間:2021年03月22日 08:59:31   作者:bia!  
這篇文章主要介紹了SpringBoot使用Nacos動態(tài)配置數(shù)據(jù)源的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

SpringBoot/SpringCloud項目部署運行后,如果使用硬編碼方式定義數(shù)據(jù)源,那么如果需要更換數(shù)據(jù)庫,就只能通過更改源碼并重啟的方式來達(dá)成目的
而SpringCloud生態(tài)中有配置中心這一組件,我們可以將數(shù)據(jù)源連接屬性編寫在配置中心中,需要修改連接屬性就可以從配置中心中修改并發(fā)布,這樣就可以熱修改數(shù)據(jù)源位置無需重啟服務(wù)

那么下面實戰(zhàn)說明如何將使用Nacos配置/注冊中心配置數(shù)據(jù)源(請注意看我寫的注釋來避坑)

首先說明版本

  1. SpringBoot 2.2.0.RELEASE
  2. Druid 1.1.22 (再重寫的時候類會隨著版本的不同而不同)
  3. MySQL 8.0.18
  4. Nacos 1.3.1(Nacos版本不對很可能會踩坑)
  5. IDEA 2020.3.2
  6. MyBatis 2.1.4(沒用上,但若使用并不沖突)

文章較長,但大多都是復(fù)制粘貼操作,先在這里說明整個配置的步驟

  1. 創(chuàng)建SpringBoot項目并引入依賴(直接復(fù)制粘貼)
  2. 創(chuàng)建bootstrap.yml文件(直接復(fù)制粘貼)
  3. 創(chuàng)建配置類(直接復(fù)制粘貼)
  4. 重寫Druid的DruidAbstractDataSource類(這個需要根據(jù)版本來修改)
  5. 在Nacos配置中心中新建配置

完成配置后的項目目錄

項目目錄

請注意:我默認(rèn)讀者會使用IDEA創(chuàng)建SpringBoot項目,并且可以自己安裝Nacos

1.maven依賴

	<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
  </properties>

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-alibaba-dependencies</artifactId>
        <version>2.1.1.RELEASE</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>2.1.4</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
      <exclusions>
        <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.22</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-configuration-processor</artifactId>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <optional>true</optional>
      <scope>provided</scope>
      <version>1.18.12</version>
    </dependency>
  </dependencies>

2.bootstrap.yml(這個優(yōu)先級高于propertie文件,用于配置Nacos)

如果需要區(qū)分生產(chǎn)環(huán)境或?qū)acos持久化至MySQL請自行學(xué)習(xí)Nacos官方文檔

spring:
 application:
 	#這個服務(wù)名稱與最下面的file-extension: properties合起來
 	#即questionBank.properties為Nacos配置文件的名稱
  name: questionBank
 cloud:
  nacos:
   #注冊中心
   discovery:
    # 是否啟用
    enabled: true
    # nacos服務(wù)地址
    server-addr: 127.0.0.1:8848
    # 服務(wù)名
    #service: ${spring.application.name}
    # 組名
    group: DEFAULT
    # 權(quán)重
    weight: 2
    # 元數(shù)據(jù)
    metadata:
     auth: sty
     version: 1.0
    # 日志名
    log-name: ${spring.application.name}
    # 是否開啟watch
    watch: true
    # 多長時間從服務(wù)端拉取一次
    watch-delay: 30000
    # 集群名稱
    cluster-name: DEFAULT
    # 是否開啟注冊,如果為false,不會將自身注冊上去
    register-enabled: true
    # https
    secure: false
   #配置中心
   config:
    server-addr: 127.0.0.1:8848
    #個人比較喜歡用properties文件,yaml縮進老出錯
    file-extension: properties
server:
 port: 8080

3.配置類:DruidConfiguration(叫啥名無所謂)

import com.alibaba.druid.pool.DruidDataSource;
import lombok.Data;
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;
/**
 * @Author:STY
 * @Description: 數(shù)據(jù)源獲取配置(配置中心)
 * @Date:2021/3/17
 */
@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.url.driverClassName}")
  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;
  }
}

注意注意:@RefreshScope一定要加?。。。。。?!否則將無法自動刷新從Nacos發(fā)布的新數(shù)據(jù),因為lombok比較好用所以@Data就直接用他的了

4.然后就是最重要的一步(這個視Druid版本來修改)

重申一下我用的Druid版本為1.1.22

重寫com.alibaba.druid.pool.DruidAbstractDataSource類
由于Druid只允許初始化一次,所以只能修改他的源碼,而版本不同會導(dǎo)致該類并不相同,在修改源碼時必須尤為注意?。。。。?!

在com包下創(chuàng)建alibaba.druid.pool(路徑別錯了)

修改Druid源碼

DruidAbstractDataSource類直接復(fù)制過來

在這里插入圖片描述

然后在復(fù)制過來的類中找到以下兩個方法
注釋掉畫圈位置

setUsername
setUrl

至此,本地的項目已經(jīng)配置完成,下面剩下最后一個步驟,在Nacos上創(chuàng)建配置文件

Nacos

這個Data id 與上面第二個步驟中的名稱配置對應(yīng)(注意看注釋)
配置格式要勾選Properties

配置

點擊發(fā)布,搞定!

到此這篇關(guān)于SpringBoot使用Nacos動態(tài)配置數(shù)據(jù)源的方法的文章就介紹到這了,更多相關(guān)SpringBoot動態(tài)配置數(shù)據(jù)源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 常用的Java數(shù)據(jù)結(jié)構(gòu)知識點匯總

    常用的Java數(shù)據(jù)結(jié)構(gòu)知識點匯總

    這篇文章主要介紹了常用的Java數(shù)據(jù)結(jié)構(gòu)知識點匯總,數(shù)據(jù)結(jié)構(gòu)分線性數(shù)據(jù)結(jié)構(gòu)和非線性數(shù)據(jù)結(jié)構(gòu),下面對此作詳細(xì)介紹,需要的小伙伴可以參考一下,希望對你的學(xué)習(xí)或工作有所幫助
    2022-03-03
  • Java8?Stream?流常用方法合集

    Java8?Stream?流常用方法合集

    這篇文章主要介紹了?Java8?Stream?流常用方法合集,Stream?是?Java8?中處理集合的關(guān)鍵抽象概念,它可以指定你希望對集合進行的操作,可以執(zhí)行非常復(fù)雜的查找、過濾和映射數(shù)據(jù)等操作,下文相關(guān)資料,需要的朋友可以參考一下
    2022-04-04
  • Java隊列篇之實現(xiàn)數(shù)組模擬隊列及可復(fù)用環(huán)形隊列詳解

    Java隊列篇之實現(xiàn)數(shù)組模擬隊列及可復(fù)用環(huán)形隊列詳解

    像棧一樣,隊列(queue)也是一種線性表,它的特性是先進先出,插入在一端,刪除在另一端。就像排隊一樣,剛來的人入隊(push)要排在隊尾(rear),每次出隊(pop)的都是隊首(front)的人
    2021-10-10
  • idea創(chuàng)建的idea項目時springframework出現(xiàn)紅色的原因和解決方法

    idea創(chuàng)建的idea項目時springframework出現(xiàn)紅色的原因和解決方法

    當(dāng)使用 IntelliJ IDEA 創(chuàng)建 Spring Framework 項目時,springframework 出現(xiàn)紅色可能是因為相關(guān)的 Spring Framework 依賴沒有正確加載或項目的配置有問題,本文給大家介紹了一些常見的原因和解決方法,需要的朋友可以參考下
    2023-09-09
  • 解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題

    解決JavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題

    下面小編就為大家?guī)硪黄鉀QJavaEE開發(fā)中字符編碼出現(xiàn)亂碼的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • IntelliJ?IDEA?2023.1.4?無法刷新Maven項目模塊的問題及解決方法

    IntelliJ?IDEA?2023.1.4?無法刷新Maven項目模塊的問題及解決方法

    這篇文章主要介紹了如何排查?IDEA?自身報錯問題,本文以IntelliJ?IDEA?2023.1.4無法刷新項目Maven模塊的問題為例,給大家詳細(xì)講解,需要的朋友可以參考下
    2023-08-08
  • springboot集成shiro詳細(xì)總結(jié)

    springboot集成shiro詳細(xì)總結(jié)

    這幾天在看 shiro,用 springboot 集成了一下,下面的這個例子中主要介紹了 shiro 的認(rèn)證和授權(quán),以及鹽值加密的功能.程序可以運行起來.這里只做一個簡單的介紹,后續(xù)會針對各個功能做一個詳細(xì)的介紹,這里不做過多的贅述,需要的朋友可以參考下
    2021-05-05
  • java并發(fā)之synchronized

    java并發(fā)之synchronized

    這篇文章主要介紹了java并發(fā)關(guān)鍵字synchronized,包括內(nèi)容synchronized的使用、synchronized背后的Monitor、synchronized保證可見性和防重排序、使用synchronized注意嵌套鎖定,具體內(nèi)容請看下面文章吧
    2021-10-10
  • Java生產(chǎn)者消費者的三種實現(xiàn)方式

    Java生產(chǎn)者消費者的三種實現(xiàn)方式

    這篇文章主要介紹了Java生產(chǎn)者消費者的三種實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 基于springboot的flowable工作流實戰(zhàn)流程分析

    基于springboot的flowable工作流實戰(zhàn)流程分析

    這篇文章主要介紹了基于springboot的flowable工作流實戰(zhàn)流程分析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10

最新評論