国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

分享一個優(yōu)秀的動態(tài)數(shù)據(jù)源開源庫-dynamic-datasource-spring-boot-starter

這篇具有很好參考價值的文章主要介紹了分享一個優(yōu)秀的動態(tài)數(shù)據(jù)源開源庫-dynamic-datasource-spring-boot-starter。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1.1 前言

在我們的Java后端研發(fā)工作中, 有時候由于業(yè)務的快速迭代和數(shù)據(jù)的安全隔離性,往往會為不同的 API業(yè)務線分配不同的數(shù)據(jù)庫,即一個微服務經(jīng)常需要和多個數(shù)據(jù)源打交道。

1.2 動態(tài)數(shù)據(jù)源開源庫簡介

  • dynamic-datasource-spring-boot-starter 是一個基于springboot的快速集成多數(shù)據(jù)源的啟動器。
  • 其支持 Jdk 1.7+, SpringBoot 1.5.x 2.x.x 3.x.x。
  • 點擊查看詳細文檔

PS: 一般免費的文檔部分就夠用了,不需付費

1.3 特性

  • 支持 數(shù)據(jù)源分組,適用于多種場景 純粹多庫 讀寫分離 一主多從 混合模式。
  • 支持數(shù)據(jù)庫敏感配置信息 加密(可自定義) ENC()。
  • 支持每個數(shù)據(jù)庫獨立初始化表結(jié)構(gòu)schema和數(shù)據(jù)庫database。
  • 支持無數(shù)據(jù)源啟動,支持懶加載數(shù)據(jù)源(需要的時候再創(chuàng)建連接)。
  • 支持 自定義注解 ,需繼承DS(3.2.0+)。
  • 提供并簡化對Druid,HikariCp,BeeCp,Dbcp2的快速集成。
  • 提供對Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi等組件的集成方案。
  • 提供 自定義數(shù)據(jù)源來源 方案(如全從數(shù)據(jù)庫加載)。
  • 提供項目啟動后 動態(tài)增加移除數(shù)據(jù)源 方案。
  • 提供Mybatis環(huán)境下的 純讀寫分離 方案。
  • 提供使用 spel動態(tài)參數(shù) 解析數(shù)據(jù)源方案。內(nèi)置spel,session,header,支持自定義。
  • 支持 多層數(shù)據(jù)源嵌套切換 。(ServiceA >>> ServiceB >>> ServiceC)。
  • 提供 基于seata的分布式事務方案 。
  • 提供 本地多數(shù)據(jù)源事務方案。

優(yōu)點:功能強大,使用簡潔,配合 mybatis plus 更能如虎添翼。

1.4 用法示例

1.4.1 添加依賴

<dependency>       
 <groupId>com.baomidou</groupId>
 <artifactId>dynamic-datasource-spring-boot-starter</artifactId>            
 <version>3.6.0</version>        
</dependency>

查看最新版本

1.4.2 配置數(shù)據(jù)源

spring:
  datasource:
    dynamic:
      primary: master #設置默認的數(shù)據(jù)源或者數(shù)據(jù)源組,默認值即為master
      strict: false #嚴格匹配數(shù)據(jù)源,默認false. true未匹配到指定數(shù)據(jù)源時拋異常,false使用默認數(shù)據(jù)源
      datasource:
        master:
          url: jdbc:mysql://xx.xx.xx.xx:3306/dynamic
          username: root
          password: 123456
          driver-class-name: com.mysql.jdbc.Driver # 3.2.0開始支持SPI可省略此配置
        slave_1:
          url: jdbc:mysql://xx.xx.xx.xx:3307/dynamic
          username: root
          password: 123456
          driver-class-name: com.mysql.jdbc.Driver
        slave_2:
          url: ENC(xxxxx) # 內(nèi)置加密,使用請查看詳細文檔
          username: ENC(xxxxx)
          password: ENC(xxxxx)
          driver-class-name: com.mysql.jdbc.Driver
       #......省略
       #以上會配置一個默認庫master,一個組slave下有兩個子庫slave_1,slave_2

分享一個優(yōu)秀的動態(tài)數(shù)據(jù)源開源庫-dynamic-datasource-spring-boot-starter,Java后端企業(yè)級應用開發(fā)框架,開源,動態(tài)數(shù)據(jù)源,java動態(tài)數(shù)據(jù)源,mybatis動態(tài)數(shù)據(jù)源

1.4.3 使用 @DS 注解切換數(shù)據(jù)源

雖然官網(wǎng)示例在 service層

@Service
@DS("slave_1")
public class UserServiceImpl implements UserService {

  @Autowired
  private JdbcTemplate jdbcTemplate;

  public List selectAll() {
    return  jdbcTemplate.queryForList("select * from user");
  }
  
  @Override
  @DS("slave_1")
  public List selectByCondition() {
    return  jdbcTemplate.queryForList("select * from user where age >10");
  }
}

1.5 最佳實踐

我建議使用在 Dao 層上,比如如下是我項目脫敏抽離出來的一個示例:

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

/***
 * @author qingfeng.zhao
 * @date 2022/4/27
 * @apiNote
 */
@DS(value = "default-datasource")
@Mapper
@Repository
public interface VueElementAdminUserRoleMapper extends BaseMapper<VueElementAdminUserRoleEntity> {
}
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@DS(value = "second-data-source")
@Repository
@Mapper
public interface MyProductMapper extends BaseMapper<MyProductInfoEntity> {
}
spring:
  application:
    name: xxxxxxx
  # 動態(tài)數(shù)據(jù)源  dynamic-datasource-spring-boot-starter
  datasource:
    dynamic:
      # 設置默認的數(shù)據(jù)源或者數(shù)據(jù)源組,默認值即為master
      primary: default-datasource
      # 嚴格匹配數(shù)據(jù)源,默認false. true未匹配到指定數(shù)據(jù)源時拋異常,false使用默認數(shù)據(jù)源
      strict: false
      datasource:
        default-datasource:
         url: jdbc:mysql://192.168.xxx.xxx:3306/myFirstDb?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8
         username: xxxxxx
         password: xxxxxx
         driver-class-name: com.mysql.cj.jdbc.Driver
        second-data-source:
         url: jdbc:mysql://192.168.xxx.xxx:3306/mySecondDb?serverTimezone=Asia/Shanghai&useUnicode=true&useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=UTF-8
         username: xxxxxx
         password: xxxxxx
         driver-class-name: com.mysql.cj.jdbc.Driver

@DS注解的數(shù)據(jù)源名稱需在application.yml 中配置


本篇完~文章來源地址http://www.zghlxwxcb.cn/news/detail-530706.html

到了這里,關于分享一個優(yōu)秀的動態(tài)數(shù)據(jù)源開源庫-dynamic-datasource-spring-boot-starter的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!

    苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!

    2023年元旦,我媽又開始了對我的念叨 媽:你到底想多少歲結(jié)婚 我:60 媽:60,你想找個多大的 我:找個55的啊,她55我60,結(jié)婚都有退休金,不用上班不用生孩子,不用買車買房,成天就是玩兒 我:而且一結(jié)婚就是白頭偕老,多好 我媽直接一大嘴巴子呼我臉上 最近接到一個

    2023年04月21日
    瀏覽(18)
  • SpringBoot——動態(tài)數(shù)據(jù)源(多數(shù)據(jù)源自動切換)

    SpringBoot——動態(tài)數(shù)據(jù)源(多數(shù)據(jù)源自動切換)

    日常的業(yè)務開發(fā)項目中只會配置一套數(shù)據(jù)源,如果需要獲取其他系統(tǒng)的數(shù)據(jù)往往是通過調(diào)用接口, 或者是通過第三方工具比如kettle將數(shù)據(jù)同步到自己的數(shù)據(jù)庫中進行訪問。 但是也會有需要在項目中引用多數(shù)據(jù)源的場景。比如如下場景: 自研數(shù)據(jù)遷移系統(tǒng),至少需要新、老兩

    2024年02月16日
    瀏覽(18)
  • springboot整合多數(shù)據(jù)源的配置以及動態(tài)切換數(shù)據(jù)源,注解切換數(shù)據(jù)源

    springboot整合多數(shù)據(jù)源的配置以及動態(tài)切換數(shù)據(jù)源,注解切換數(shù)據(jù)源

    在許多應用程序中,可能需要使用多個數(shù)據(jù)庫或數(shù)據(jù)源來處理不同的業(yè)務需求。Spring Boot提供了簡便的方式來配置和使用多數(shù)據(jù)源,使開發(fā)人員能夠輕松處理多個數(shù)據(jù)庫連接。如果你的項目中可能需要隨時切換數(shù)據(jù)源的話,那我這篇文章可能能幫助到你 ??:這里對于pom文件

    2024年02月10日
    瀏覽(32)
  • SpringBoot從數(shù)據(jù)庫讀取數(shù)據(jù)數(shù)據(jù)源配置信息,動態(tài)切換數(shù)據(jù)源

    SpringBoot從數(shù)據(jù)庫讀取數(shù)據(jù)數(shù)據(jù)源配置信息,動態(tài)切換數(shù)據(jù)源

    ? ? ? ? 首先準備多個數(shù)據(jù)庫,主庫smiling-datasource,其它庫test1、test2、test3 ? ? ? ? 接下來,我們在主庫smiling-datasource中,創(chuàng)建表databasesource,用于存儲多數(shù)據(jù)源相關信息。表結(jié)構(gòu)設計如下 ? ? ? ? 創(chuàng)建好表之后,向表databasesource中存儲test1、test2、test3三個數(shù)據(jù)庫的相關配置

    2024年01月16日
    瀏覽(36)
  • 利用 Mybatis-Plus 的動態(tài)數(shù)據(jù)源實現(xiàn)多數(shù)據(jù)源配置

    利用 Mybatis-Plus 的動態(tài)數(shù)據(jù)源實現(xiàn)多數(shù)據(jù)源配置

    目錄 一、導入依賴 二、Application.yaml配置文件 三、切換數(shù)據(jù)源 四、其他方法 4.1?配置多個數(shù)據(jù)源 4.2?定義Datasource和EntityManager 4.3?在需要使用數(shù)據(jù)源的地方注入不同的EntityManager 官網(wǎng):https://baomidou.com/pages/a61e1b/#dynamic-datasource 默認是使用配置文件中master參數(shù)設置的數(shù)據(jù)庫。

    2024年02月13日
    瀏覽(29)
  • SpringBoot動態(tài)切換數(shù)據(jù)源

    SpringBoot動態(tài)切換數(shù)據(jù)源

    ? Spring提供一個DataSource實現(xiàn)類用于動態(tài)切換數(shù)據(jù)源—— AbstractRoutingDataSource pom.xml 大概的項目結(jié)構(gòu) 注意:這兩個事務管理器,并不能處理分布式事務 鏈接:https://pan.baidu.com/s/1ymxeKYkI-cx7b5nTQX0KWQ? 提取碼:6bii? --來自百度網(wǎng)盤超級會員V4的分享? ? ? ? ? ? ? ??

    2024年02月06日
    瀏覽(19)
  • Springboot 多數(shù)據(jù)源 dynamic-datasource動態(tài)添加移除數(shù)據(jù)源

    Springboot 多數(shù)據(jù)源 dynamic-datasource動態(tài)添加移除數(shù)據(jù)源

    上一篇文章我們講了如何通過多數(shù)據(jù)源組件,在Spring boot Druid 連接池項目中配置多數(shù)據(jù)源,并且通過@DS注解的方式切換數(shù)據(jù)源,《Spring Boot 配置多數(shù)據(jù)源【最簡單的方式】》。但是在多租戶的業(yè)務場景中,我們通常需要手動的切換數(shù)據(jù)源,那么本文將解答你的額疑惑。 dynam

    2024年02月13日
    瀏覽(20)
  • mybatisplus快速實現(xiàn)動態(tài)數(shù)據(jù)源切換

    1.背景 ? 通常一個系統(tǒng)只需要連接一個數(shù)據(jù)庫就可以了。但是在企業(yè)應用的開發(fā)中往往會和其他子系統(tǒng)交互,特別是對于一些數(shù)據(jù)實時性要求比較高的數(shù)據(jù),我們就需要做實時連接查詢,而不是做同步。這個時候就需要用到多數(shù)據(jù)源。 ? 舉個簡單的例子某企業(yè)要做訂單網(wǎng)上訂

    2024年02月06日
    瀏覽(24)
  • springMvc項目如何配置動態(tài)數(shù)據(jù)源

    具體文件引入和結(jié)構(gòu)體參考另一章連接

    2024年01月21日
    瀏覽(24)
  • Spring動態(tài)添加數(shù)據(jù)源(全自動)

    Spring動態(tài)添加數(shù)據(jù)源(全自動)

    一、使用場景 1、現(xiàn)在網(wǎng)上所有寫的動態(tài)數(shù)據(jù)源,都是假動態(tài)數(shù)據(jù),都是預先知道要連接幾個數(shù)據(jù)庫,但這不滿足具體真正需要動態(tài)添加連接數(shù)據(jù)庫的需求; 2、在很多業(yè)務場景下,如項目默認連一個主數(shù)據(jù)庫,服務啟動后,因業(yè)務不停的變更,需要動態(tài)連接其它數(shù)據(jù)庫處理數(shù)

    2024年02月01日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包