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

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

這篇具有很好參考價(jià)值的文章主要介紹了苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

開心一刻

  2023年元旦,我媽又開始了對我的念叨

  媽:你到底想多少歲結(jié)婚

  我:60

  媽:60,你想找個(gè)多大的

  我:找個(gè)55的啊,她55我60,結(jié)婚都有退休金,不用上班不用生孩子,不用買車買房,成天就是玩兒

  我:而且一結(jié)婚就是白頭偕老,多好

  我媽直接一大嘴巴子呼我臉上

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

需求背景

  最近接到一個(gè)需求,需要從兩個(gè)數(shù)據(jù)源獲取數(shù)據(jù),然后進(jìn)行匯總展示

  一個(gè)數(shù)據(jù)源是?MySQL?,另一個(gè)數(shù)據(jù)源是?SQL Server?

  樓主是一點(diǎn)都不慌的,因?yàn)槲覍戇^好幾篇關(guān)于數(shù)據(jù)源的文章

    spring集成mybatis實(shí)現(xiàn)mysql讀寫分離

    原理解密 → Spring AOP 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源(讀寫分離),底層原理是什么

    Spring 下,關(guān)于動(dòng)態(tài)數(shù)據(jù)源的事務(wù)問題的探討

  我會(huì)慌?

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

  但還是有點(diǎn)小拒絕,為什么了?

  自己實(shí)現(xiàn)的話,要寫的東西還是很多,要寫?AOP?,還要實(shí)現(xiàn)?AbstractRoutingDataSource?,還要用到?ThreadLocal?,...

  如果考慮更遠(yuǎn)一些,事務(wù)、數(shù)據(jù)源之間的嵌套等等,要如何保證正確?

  但好在這次需求只是查詢,然后匯總,問題就簡單很多了,但還是覺得有點(diǎn)小繁瑣

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

  當(dāng)然,如上只是樓主的臆想

  有小伙伴可能會(huì)問道:能不能合到一個(gè)數(shù)據(jù)源?

  樓主只能說:別問了,再問就不禮貌了

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

  既然改變不了,那就盤它

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

  難道就沒有現(xiàn)成的多數(shù)據(jù)源工具?

  因?yàn)橛玫搅?Mybatis-Plus?,樓主試著?Google?了一下

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

  直接一發(fā)入魂,眼前一黑,不對,是眼前一亮!

  感覺就是它了!

MyBatis-Plus 多數(shù)據(jù)源

  關(guān)于苞米豆(baomidou),我們最熟悉的肯定是?MyBatis-Plus?

  但旗下還有很多其他優(yōu)秀的組件

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

  多數(shù)據(jù)源就是其中一個(gè),今天我們就來會(huì)會(huì)它

  數(shù)據(jù)源準(zhǔn)備

  用?docker?準(zhǔn)備一個(gè)?MySQL?和?SQL Server?,圖省事,兩個(gè)數(shù)據(jù)庫服務(wù)器放到同個(gè)?docker?下了

  有小伙伴會(huì)覺得放一起不合適,有單點(diǎn)問題!

  樓主只是為了演示,糾結(jié)那么細(xì),當(dāng)心敲你狗頭

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

  ?MySQL?版本:?8.0.27?

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

  建庫:?datasource_mysql?,建表:?tbl_user?,并插入初始化數(shù)據(jù)

苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!
CREATE DATABASE datasource_mysql;
USE datasource_mysql;
CREATE TABLE tbl_user (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    user_name VARCHAR(50),
    PRIMARY KEY(id)
);
INSERT INTO tbl_user(user_name) VALUES('張三'),('李四');
View Code

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

  ?SQL Server?版本:?Microsoft SQL Server 2017 ...?,是真長,跟樓主一樣長!

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

  建庫:?datasource_mssql?,建表:?tbl_order?,并插入初始化數(shù)據(jù)

苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!
CREATE DATABASE datasource_mssql;
USE datasource_mssql;
CREATE TABLE tbl_order(
    id BIGINT PRIMARY KEY IDENTITY(1,1),
    order_no NVARCHAR(50),
    created_at DATETIME NOT NULL DEFAULT(GETDATE()),
    updated_at DATETIME NOT NULL DEFAULT(GETDATE())
);
INSERT INTO tbl_order(order_no) VALUES('123456'),('654321');
View Code

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

  dynamic-datasource 使用

  基于?spring-boot 2.2.10.RELEASE?、?mybatis-plus 3.1.1?搭建

  ?dynamic-datasource-spring-boot-starter?也是?3.1.1?

  依賴很簡單,?pom.xml?

苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.lee</groupId>
    <artifactId>mybatis-plus-dynamic-datasource</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.10.RELEASE</version>
    </parent>

    <properties>
        <java.version>1.8</java.version>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <mybatis-plus-boot-starter.version>3.1.1</mybatis-plus-boot-starter.version>
        <mssql-jdbc.version>6.2.1.jre8</mssql-jdbc.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus-boot-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>${mybatis-plus-boot-starter.version}</version>
        </dependency>
        <!-- MySQL驅(qū)動(dòng)-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

        <!-- SQL Server 驅(qū)動(dòng)-->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>${mssql-jdbc.version}</version>
        </dependency>
    </dependencies>
</project>
View Code

  配置也很簡單,?application.yml?

苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!
server:
  port: 8081
spring:
  application:
    name: dynamic-datasource
  datasource:
    dynamic:
      datasource:
        mssql_db:
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
          url: jdbc:sqlserver://10.5.108.225:1433;DatabaseName=datasource_mssql;IntegratedSecurity=false;ApplicationIntent=ReadOnly;MultiSubnetFailover=True
          username: sa
          password: Root#123456
        mysql_db:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://10.5.108.225:3306/datasource_mysql?useSSL=false&useUnicode=true&characterEncoding=utf-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai
          username: root
          password: 123456
      primary: mssql_db
      strict: false

mybatis-plus:
  mapper-locations: classpath:mappers/*.xml
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
View Code

  然后在對應(yīng)的類或者方法上加上注解?DS("數(shù)據(jù)源名稱")?即可,例如

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

  我們來看下效果

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

  是不是很神奇?

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

  完整代碼:mybatis-plus-dynamic-datasource

  原理探究

  ?@DS?用于指定數(shù)據(jù)源,可以注解在方法上或類上,同時(shí)存在則采用就近原則 方法上注解 優(yōu)先于 類上注解

  這可不是我瞎說,官方文檔就是這么寫的

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

  難道一個(gè)?@DS?就有如此強(qiáng)大的功能?你們不信,我也不信,它背后肯定有人!

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

  那么我們就來揪一揪背后的它

  怎么揪了,這又是個(gè)難題,我們先打個(gè)斷點(diǎn),看一下調(diào)用棧

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

  點(diǎn)一下,瞬間高潮了,不是,是瞬間清醒了

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

  紅線框住的,分 2 點(diǎn):1:?determineDatasource?,2:?DynamicDataSourceContextHolder.push?

  我們先看?determineDatasource?

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

  1、獲取?Method?對象

  2、該方法上是否有 DS 注解,有則取方法的 DS 注解,沒有則取方法對應(yīng)的類上的 DS 注解;這個(gè)看明白了沒?

  3、獲取注解的值,也就是?@DS("mysql_db")?中的?mysql_db?

  4、如果數(shù)據(jù)源名不為空并且數(shù)據(jù)原名以動(dòng)態(tài)前綴(#)開頭,則你們自己去跟?dsProcessor.determineDatasource?

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

    否則則直接返回?cái)?shù)據(jù)源名

  針對案例的話,這里肯定是返回類上的數(shù)據(jù)源名(方法上沒有指定數(shù)據(jù)源,也沒有以動(dòng)態(tài)前綴開頭)

  我們再來看看?DynamicDataSourceContextHolder.push?

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

  很簡單,但?LOOKUP_KEY_HOLDER?很有意思

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

  是一個(gè)棧,而非樓主在spring集成mybatis實(shí)現(xiàn)mysql讀寫分離?采用的

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

  至于為什么,人家注釋已經(jīng)寫的很清楚了,試問樓主的實(shí)現(xiàn)能滿足一級一級數(shù)據(jù)源切換的調(diào)用場景嗎?

  但不管怎么說,?LOOKUP_KEY_HOLDER?的類型還是?ThreadLocal?

  接下來該分析什么?

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

  我們回顧下:原理解密 → Spring AOP 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源(讀寫分離),底層原理是什么

  直接跳到總結(jié)

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

?  框住的 3 條,上面的 2 條在上面已經(jīng)分析過了把,是不是?你回答是就完事了

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

  注意,樓主的?DynamicDataSource?是自實(shí)現(xiàn)的類,繼承了?spring-jdbc?的?AbstractRoutingDataSource?

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

  那我們就找?AbstractRoutingDataSource?的實(shí)現(xiàn)類唄

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

  發(fā)現(xiàn)它就一個(gè)實(shí)現(xiàn)類,并且是在?spring-jdbc?下,而不是在?com.baomidou?下

  莫非苞米豆有自己的?AbstractRoutingDataSource?? 我們來看看?AbstractDataSource?的實(shí)現(xiàn)類有哪些

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

  看到了沒,那么我們接下來就分析它

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

  內(nèi)容很簡單,最重要的?determineDataSource?還是個(gè)抽象方法,那沒辦法了,看它有哪些子類實(shí)現(xiàn)

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

  ?DynamicRoutingDataSource?的?determineDataSource?方法如下

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

?  ?DynamicDataSourceContextHolder?有沒有感覺到熟悉?

  想想它的?ThreadLocal<Deque<String>> LOOKUP_KEY_HOLDER?,回憶上來了沒?

  出棧,獲取到當(dāng)前的數(shù)據(jù)源名;接下來該分析誰了?

  那肯定是?getDataSource?方法

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

  1、如果數(shù)據(jù)源為空,那么直接返回默認(rèn)數(shù)據(jù)源,對應(yīng)配置文件中的

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

  2、分組數(shù)據(jù)源,我們的示例代碼那么簡單,應(yīng)該沒涉及到這個(gè),先不管

  3、所有數(shù)據(jù)源,是一個(gè)?LinkHashMap?,key 是?數(shù)據(jù)源名?,value 是數(shù)據(jù)源

    可想而知,我們示例的數(shù)據(jù)源獲取就是從該 map 獲取的

  4、是否啟用嚴(yán)格模式,默認(rèn)不啟動(dòng)。嚴(yán)格模式下未匹配到數(shù)據(jù)源直接報(bào)錯(cuò),,非嚴(yán)格模式下則使用默認(rèn)數(shù)據(jù)源?primary?所設(shè)置的數(shù)據(jù)源

  5、對應(yīng) 4,未開啟嚴(yán)格模式,未匹配到數(shù)據(jù)源則使用?primary?所設(shè)置的數(shù)據(jù)源

  那現(xiàn)在又該分析誰?肯定是?dataSourceMap?的值是怎么?put?進(jìn)去的

  我們看哪些地方用到了?dataSourceMap?

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

  發(fā)現(xiàn)就一個(gè)地方進(jìn)行了?put?

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

  那這個(gè)?addDataSource?方法又在哪被調(diào)用了?

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

  ?DynamicRoutingDataSource?實(shí)現(xiàn)了?InitializingBean?,所以在啟動(dòng)過程中,它的?afterPropertiesSet?方法會(huì)被調(diào)用,至于為什么,大家自行去查閱

  接下來該分析什么?那肯定是?Map<String, DataSource> dataSources = provider.loadDataSources();?

  我們跟進(jìn)?loadDataSources()?,發(fā)現(xiàn)有兩個(gè)類都有該方法

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

  那么我們應(yīng)該跟誰?有兩種方法

  1、憑感覺,我們的配置文件是?yml?

  2、打斷點(diǎn),重新啟動(dòng)項(xiàng)目,一目了然

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

  ?YmlDynamicDataSourceProvider?的?loadDataSources?方法如下

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

  (這里留個(gè)疑問:?dataSourcePropertiesMap?存放的是什么,值是如何 put 進(jìn)去的?

  繼續(xù)往下跟?createDataSourceMap?方法

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

  1、配置文件中的數(shù)據(jù)源屬性,斷點(diǎn)下就很清楚了

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

  2、根據(jù)數(shù)據(jù)源屬性創(chuàng)建數(shù)據(jù)源,然后放進(jìn)?dataSourceMap?中

  創(chuàng)建數(shù)據(jù)源的過程就不跟了,感興趣的自行去研究

  至此,不知道大家清楚了沒? 我反正是暈了

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

總結(jié)

  1、萬變不離其宗,多數(shù)據(jù)源的原理是不變的

    原理解密 → Spring AOP 實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源(讀寫分離),底層原理是什么

  2、苞米豆的多數(shù)據(jù)源的自動(dòng)配置類

    com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration

    這個(gè)配置類很重要,很多重要的對象都是在這里注入到?Spring?容器中的

    關(guān)于自動(dòng)配置,大家可參考:springboot2.0.3源碼篇 - 自動(dòng)配置的實(shí)現(xiàn),發(fā)現(xiàn)也不是那么復(fù)雜

  3、遇到問題,不要立馬一頭扎進(jìn)去,自己實(shí)現(xiàn),多查查,看是否有現(xiàn)成的第三方實(shí)現(xiàn)

    自己實(shí)現(xiàn),很容易踩別人踩過的坑,容易浪費(fèi)時(shí)間;另外局限性太大,不易拓展,畢竟一人之力有限文章來源地址http://www.zghlxwxcb.cn/news/detail-420104.html

到了這里,關(guān)于苞米豆的多數(shù)據(jù)源 → dynamic-datasource-spring-boot-starter,挺香的!的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MyBatis Plus 插件 動(dòng)態(tài)數(shù)據(jù)源實(shí)現(xiàn)原理與源碼講解 (dynamic-datasource-spring-boot-starter-master)

    MyBatis Plus 插件 動(dòng)態(tài)數(shù)據(jù)源實(shí)現(xiàn)原理與源碼講解 (dynamic-datasource-spring-boot-starter-master)

    目錄 1. 介紹 2. 基本原理 3. 源碼介紹 3.1 使用 AOP 攔截,方法執(zhí)行前獲取到當(dāng)前方法要用的數(shù)據(jù)源 3.2 實(shí)現(xiàn)自定義?DataSource 接口,實(shí)現(xiàn) DataSource 接口的 getConnect 方法做動(dòng)態(tài)處理 多數(shù)據(jù)源即一個(gè)項(xiàng)目中同時(shí)存在多個(gè)不同的數(shù)據(jù)庫連接池。 比如 127.0.0.1:3306/test? ?127.0.0.1:3307/test?

    2024年02月07日
    瀏覽(28)
  • Spring | 基于SpringBoot的多數(shù)據(jù)源實(shí)戰(zhàn) - 使用seata實(shí)現(xiàn)多數(shù)據(jù)源的全局事務(wù)管理

    Spring | 基于SpringBoot的多數(shù)據(jù)源實(shí)戰(zhàn) - 使用seata實(shí)現(xiàn)多數(shù)據(jù)源的全局事務(wù)管理

    在軟件開發(fā)中, 多數(shù)據(jù)源 的應(yīng)用越來越普遍,特別是在 微服務(wù)架構(gòu) 和 業(yè)務(wù)模塊化 的場景下。多數(shù)據(jù)源能夠讓不同的業(yè)務(wù)模塊和微服務(wù)擁有各自獨(dú)立的數(shù)據(jù)存儲(chǔ),大大提高了系統(tǒng)的靈活性和可維護(hù)性。本文將深入探討多數(shù)據(jù)源的配置和實(shí)施,以及在 Spring Boot 環(huán)境下,如何通

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

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

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

    2024年02月10日
    瀏覽(32)
  • NamedParameterJdbcTemplate多數(shù)據(jù)源指定數(shù)據(jù)源

    實(shí)戰(zhàn)例子記錄 pom config NamedParameterJdbcTemplate(動(dòng)態(tài)sql調(diào)用)

    2024年02月08日
    瀏覽(29)
  • 數(shù)據(jù)源作用以及spring配置數(shù)據(jù)源

    數(shù)據(jù)源,簡單理解為數(shù)據(jù)源頭,提供了應(yīng)用程序所需要數(shù)據(jù)的位置。數(shù)據(jù)源保證了應(yīng)用程序與目標(biāo)數(shù)據(jù)之間交互的規(guī)范和協(xié)議,它可以是數(shù)據(jù)庫,文件系統(tǒng)等等。其中數(shù)據(jù)源定義了位置信息,用戶驗(yàn)證信息和交互時(shí)所需的一些特性的配置,同時(shí)它封裝了如何建立與數(shù)據(jù)源的連

    2024年02月07日
    瀏覽(27)
  • SpringBoot——?jiǎng)討B(tài)數(shù)據(jù)源(多數(shù)據(jù)源自動(dòng)切換)

    SpringBoot——?jiǎng)討B(tài)數(shù)據(jù)源(多數(shù)據(jù)源自動(dòng)切換)

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

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

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

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

    2024年01月16日
    瀏覽(36)
  • 【Spring Boot 3】【數(shù)據(jù)源】自定義多數(shù)據(jù)源

    軟件開發(fā)是一門實(shí)踐性科學(xué),對大多數(shù)人來說,學(xué)習(xí)一種新技術(shù)不是一開始就去深究其原理,而是先從做出一個(gè)可工作的DEMO入手。但在我個(gè)人學(xué)習(xí)和工作經(jīng)歷中,每次學(xué)習(xí)新技術(shù)總是要花費(fèi)或多或少的時(shí)間、檢索不止一篇資料才能得出一個(gè)可工作的DEMO,這占用了我大量的時(shí)

    2024年02月01日
    瀏覽(24)
  • 【Spring Boot 3】【數(shù)據(jù)源】自定義JPA數(shù)據(jù)源

    軟件開發(fā)是一門實(shí)踐性科學(xué),對大多數(shù)人來說,學(xué)習(xí)一種新技術(shù)不是一開始就去深究其原理,而是先從做出一個(gè)可工作的DEMO入手。但在我個(gè)人學(xué)習(xí)和工作經(jīng)歷中,每次學(xué)習(xí)新技術(shù)總是要花費(fèi)或多或少的時(shí)間、檢索不止一篇資料才能得出一個(gè)可工作的DEMO,這占用了我大量的時(shí)

    2024年01月21日
    瀏覽(32)
  • 【Spring Boot 3】【數(shù)據(jù)源】自定義JPA多數(shù)據(jù)源

    軟件開發(fā)是一門實(shí)踐性科學(xué),對大多數(shù)人來說,學(xué)習(xí)一種新技術(shù)不是一開始就去深究其原理,而是先從做出一個(gè)可工作的DEMO入手。但在我個(gè)人學(xué)習(xí)和工作經(jīng)歷中,每次學(xué)習(xí)新技術(shù)總是要花費(fèi)或多或少的時(shí)間、檢索不止一篇資料才能得出一個(gè)可工作的DEMO,這占用了我大量的時(shí)

    2024年01月22日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包