最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

那么下面實(shí)戰(zhàn)說(shuō)明如何將使用Nacos配置/注冊(cè)中心配置數(shù)據(jù)源(請(qǐng)注意看我寫的注釋來(lái)避坑)

首先說(shuō)明版本

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

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

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

完成配置后的項(xiàng)目目錄

項(xiàng)目目錄

請(qǐng)注意:我默認(rèn)讀者會(huì)使用IDEA創(chuàng)建SpringBoot項(xiàng)目,并且可以自己安裝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(這個(gè)優(yōu)先級(jí)高于propertie文件,用于配置Nacos)

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

spring:
 application:
 	#這個(gè)服務(wù)名稱與最下面的file-extension: properties合起來(lái)
 	#即questionBank.properties為Nacos配置文件的名稱
  name: questionBank
 cloud:
  nacos:
   #注冊(cè)中心
   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}
    # 是否開(kāi)啟watch
    watch: true
    # 多長(zhǎng)時(shí)間從服務(wù)端拉取一次
    watch-delay: 30000
    # 集群名稱
    cluster-name: DEFAULT
    # 是否開(kāi)啟注冊(cè),如果為false,不會(huì)將自身注冊(cè)上去
    register-enabled: true
    # https
    secure: false
   #配置中心
   config:
    server-addr: 127.0.0.1:8848
    #個(gè)人比較喜歡用properties文件,yaml縮進(jìn)老出錯(cuò)
    file-extension: properties
server:
 port: 8080

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

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一定要加?。。。。。。》駝t將無(wú)法自動(dòng)刷新從Nacos發(fā)布的新數(shù)據(jù),因?yàn)閘ombok比較好用所以@Data就直接用他的了

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

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

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

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

修改Druid源碼

DruidAbstractDataSource類直接復(fù)制過(guò)來(lái)

在這里插入圖片描述

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

setUsername
setUrl

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

Nacos

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

配置

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

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

相關(guān)文章

  • 詳解Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送

    詳解Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送

    這篇文章主要介紹了Jenkins 實(shí)現(xiàn)Gitlab事件自動(dòng)觸發(fā)Jenkins構(gòu)建及釘釘消息推送,應(yīng)該會(huì)對(duì)大家學(xué)習(xí)Jenkins有所啟發(fā)
    2021-04-04
  • ThreadLocal導(dǎo)致JVM內(nèi)存泄漏原因探究

    ThreadLocal導(dǎo)致JVM內(nèi)存泄漏原因探究

    ThreadLocal是JDK提供的線程本地變量機(jī)制,但若使用不當(dāng)可能導(dǎo)致內(nèi)存泄漏。正確的使用方式是在使用完后及時(shí)remove,或者使用弱引用等手段避免強(qiáng)引用導(dǎo)致的內(nèi)存泄漏。在多線程編程中,合理使用ThreadLocal可以提高并發(fā)性能,但也需要注意其潛在的內(nèi)存泄漏問(wèn)題
    2023-04-04
  • Java?IO網(wǎng)絡(luò)模型實(shí)現(xiàn)解析

    Java?IO網(wǎng)絡(luò)模型實(shí)現(xiàn)解析

    這篇文章主要為大家介紹了Java?IO網(wǎng)絡(luò)模型實(shí)現(xiàn)解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Java多線程 自定義線程池詳情

    Java多線程 自定義線程池詳情

    這篇文章主要介紹了Java多線程 自定義線程池,文章主要是學(xué)習(xí)代碼,沒(méi)有過(guò)多解析,需要的朋友可以參考一下文章的具體內(nèi)容
    2021-10-10
  • 解決java.lang.NoClassDefFoundError:lombok/Data報(bào)錯(cuò)問(wèn)題

    解決java.lang.NoClassDefFoundError:lombok/Data報(bào)錯(cuò)問(wèn)題

    在Java開(kāi)發(fā)中,使用Lombok庫(kù)簡(jiǎn)化代碼非常普遍,今天在啟動(dòng)拉取的git代碼時(shí),遇到了java.lang.NoClassDefFoundError:lombok/Data的報(bào)錯(cuò),經(jīng)過(guò)檢查,發(fā)現(xiàn)錯(cuò)誤的原因是將Date誤寫為Data,且錯(cuò)誤地引用了lombok.Data包
    2024-09-09
  • 解決idea打包成功但是resource下的文件沒(méi)有成功的問(wèn)題

    解決idea打包成功但是resource下的文件沒(méi)有成功的問(wèn)題

    這篇文章主要介紹了解決idea打包成功但是resource下的文件沒(méi)有成功的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • JavaEE實(shí)現(xiàn)文件下載

    JavaEE實(shí)現(xiàn)文件下載

    這篇文章主要介紹了JavaEE實(shí)現(xiàn)文件下載的方法,非常的實(shí)用,需要的朋友可以參考下
    2014-10-10
  • 解決Maven靜態(tài)資源過(guò)濾問(wèn)題

    解決Maven靜態(tài)資源過(guò)濾問(wèn)題

    在我們使用Maven構(gòu)建項(xiàng)目的時(shí)候,會(huì)默認(rèn)過(guò)濾掉靜態(tài)資源,所以,需要手動(dòng)來(lái)配置,本文就介紹一下Maven靜態(tài)資源過(guò)濾的問(wèn)題解決,感興趣的可以了解一下
    2021-06-06
  • Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法

    Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法

    這篇文章主要介紹了Hibernate實(shí)現(xiàn)批量添加數(shù)據(jù)的方法,詳細(xì)分析了基于Hibernate執(zhí)行批量添加操作的具體步驟與相關(guān)實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2016-03-03
  • SpringBoot 如何整合 ES 實(shí)現(xiàn) CRUD 操作

    SpringBoot 如何整合 ES 實(shí)現(xiàn) CRUD 操作

    這篇文章主要介紹了SpringBoot 如何整合 ES 實(shí)現(xiàn) CRUD 操作,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論

包头市| 星座| 增城市| 大英县| 陇南市| 盘锦市| 长岛县| 延津县| 巨野县| 铜鼓县| 历史| 手机| 许昌县| 长春市| 苏尼特右旗| 彭山县| 松原市| 丽江市| 洮南市| 华阴市| 邻水| 景谷| 金秀| 巴东县| 建德市| 乐昌市| 博爱县| 堆龙德庆县| 宜宾县| 祁门县| 大兴区| 新巴尔虎右旗| 余干县| 股票| 洱源县| 兰西县| 德钦县| 曲阳县| 永兴县| 广宗县| 兴海县|