成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

多數據源管理:掌握@DS注解的威力

開發 后端
大家在日常后端開發過程,不可避免的會接觸到需要用到配置多個數據源的場景,在這里,小編介紹一種簡單方便的,只需要簡單的配置和一個@DS注解就能實現動態數據源的方式,這種動態數據源底層原理是基于Mybatis-plus來實現的。

大家在日常后端開發過程,不可避免的會接觸到需要用到配置多個數據源的場景,在這里,小編介紹一種簡單方便的,只需要簡單的配置和一個@DS注解就能實現動態數據源的方式,這種動態數據源底層原理是基于Mybatis-plus來實現的。

1、配置方式

首先是pom.xml

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

隨后配上多數據源,我們的項目中分別配置了Mysql和Doris兩種數據庫

spring:  
    datasource:    
        druid:      
            localdb:        
                url: xxx        
                username: xxx     
                driver-class-name: com.mysql.jdbc.Driver        
                type: com.alibaba.druid.pool.DruidDataSource      
            doris:       
                url: xxx        
                username: xxx
                driver-class-name: com.mysql.jdbc.Driver        
                type: com.alibaba.druid.pool.DruidDataSource

最后需要使用哪個數據庫,在對應的方法上加上對應的@DS(“數據庫名”)注解就可以了,在類上加@DS(“數據庫名”),那么整個類下的所有方法都會使用到這個數據源,實現方式是不是非常簡單。

@Service
@DS("localdb")
public class testServiceImpl extends BaseServiceImpl<testMapper, testBean> implements testService {

    public void save(String arg1) {
       //TODO
    }
    
    public void find(String arg2) {
       //TODO
    }
}

2、底層實現原理

底層實現核心類是
com.baomidou.dynamic.datasource.DynamicRoutingDataSource,繼承自AbstractDataSource

項目在初始化的時候會調用DynamicRoutingDataSource里面的public synchronized void addDataSource(String ds, DataSource dataSource)方法加載數據源,數據源存進dataSourceMap中。

隨后,如果進行數據庫操作,以方法為最小粒度,執行對應方法時,會被
DynamicDataSourceAnnotationInterceptor攔截器攔截

執行determineDatasource方法,掃描加了@DS注解的類或者方法,隨后調用DynamicDataSourceContextHolder.poll方法。

DynamicDataSourceContextHolder.poll方法將當前線程的數據源名加到對應的ThreadLocal線程本地中

在之后的數據操作中,會調用org.springframework.jdbc.datasource.getConnection()方法,ThreadLocal中獲取之前攔截器存進去動態數據源名,如果沒有獲取到,就默認為配置的primary數據源,這完成了對應的動態數據源切換。

3、總結

基于Mybatis-plus的@DS注解可以實現動態數據源切換,具有實現簡單的優點,雖然沒有AOP實現,但是用到了AOP的思想,后續小編將寫一篇基于AOP的實現方式,歡迎大家關注。

作者:京東保險 郭盼

來源:京東云開發者社區 轉載請注明來源

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2024-10-30 10:22:17

2020-12-31 07:55:33

spring bootMybatis數據庫

2023-09-07 08:39:39

copy屬性數據源

2023-11-27 07:33:55

2009-08-14 10:26:27

ibatis多數據源

2020-11-24 09:56:12

數據源讀寫分離

2023-06-07 08:08:37

MybatisSpringBoot

2020-03-13 14:05:14

SpringBoot+數據源Java

2023-01-04 09:33:31

SpringBootMybatis

2020-06-02 07:55:31

SpringBoot多數據源

2022-05-18 12:04:19

Mybatis數據源Spring

2022-12-19 07:21:35

Hutool-db數據庫JDBC

2022-05-10 10:43:35

數據源動態切換Spring

2017-07-21 14:50:15

數據庫DB分庫事務處理

2017-09-04 14:52:51

Tomcat線程數據源

2023-10-18 15:25:29

數據源數據庫

2012-06-17 13:04:45

2022-01-12 17:39:16

Spring多租戶數據

2025-04-14 01:00:00

Calcite電商系統MySQL

2009-06-15 13:24:46

JBoss數據源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日一区二区| 精品九九九 | 国产91久久精品一区二区 | 国产精品夜夜夜一区二区三区尤 | 天天干天天干 | 黄色网址在线免费播放 | 国产精品久久久久久久久久久久冷 | av中文字幕在线观看 | 韩日视频在线观看 | 国产一区二区三区在线 | 成人性视频在线播放 | 色婷婷亚洲一区二区三区 | 亚洲国产精品久久 | 久久精品| 亚洲成人免费 | 国产精品久久网 | 国产欧美一区二区三区日本久久久 | 日韩av一区二区在线观看 | 日韩有码一区 | 国产精品区二区三区日本 | 在线2区| 美女黄色在线观看 | 最新中文字幕第一页视频 | 免费视频二区 | 国产精品欧美一区二区三区 | 久草新在线 | 日韩精品一区二区三区中文在线 | 国产色 | av网站免费观看 | 国产精品久久久久久久久久久久久 | 亚洲精品欧美一区二区三区 | 国产精品福利在线 | 午夜视频在线 | wwwxx在线观看 | 亚洲欧美在线一区 | 视频一区二区国产 | cao在线| 国产黄色在线观看 | 浮生影院免费观看中文版 | 亚洲一区二区电影在线观看 | 日韩淫片免费看 |