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

springboot多租戶設(shè)計過程圖解

 更新時間:2019年12月31日 10:45:10   作者:Oven5217  
這篇文章主要介紹了springboot多租戶設(shè)計過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

這篇文章主要介紹了springboot多租戶設(shè)計過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

1. 概述

根據(jù)不同用戶的請求,選擇不同的數(shù)據(jù)源,不同的數(shù)據(jù)源可以是Oracle、MySQL或者其它。用到的技術(shù)棧,沒有什么復(fù)雜的技術(shù),可以看到,依賴也就加了幾個而已,如下:

2. 先睹為快

如下圖,header中tenant為zhangsan,則使用db_oauth為數(shù)據(jù)源,tenant為lisi,則使用db_test為數(shù)據(jù)源,tenant為wangwu,則使用db_jxc為數(shù)據(jù)源。不同的數(shù)據(jù)源可以是不同的數(shù)據(jù)庫類型,這里為了演示統(tǒng)一使用了MySQL,用不同的庫作為不同的數(shù)據(jù)源。

3. 實(shí)現(xiàn)原理3.1 先看一下入口這個controller,一個很正常的controller.

3.2 跟進(jìn)service層,看一下這個bookService,一個正常的不能再正常的service.

3.3 跟進(jìn)dao層,看一下這個bookDao

一個正?!坪跤行┎徽5膁ao,主要是這里的這個jdbcTemplate,不是像以前一樣直接通過@Resource注入進(jìn)來的,而是通過父類的getJdbcTemplate方法獲取的,下一步進(jìn)到這個方法里邊看個究竟。

3.4 動態(tài)獲取jdbcTemplate

這里注入了一個datasourceProvider,首先從request的header中獲取租戶的標(biāo)志,然后通過datasourceProvider的selectDataSource方法獲取數(shù)據(jù)源。

3.5 繼續(xù)跟進(jìn)

這里通過一個map存儲著所有的數(shù)據(jù)源,如果沒有初始化,就將所有的數(shù)據(jù)源初始化完畢,然后放到這個map中,在使用的時候,通過租戶標(biāo)志從map中獲取。也可以改成懶加載的模式,即下邊注釋的代碼,在需要的時候才進(jìn)行數(shù)據(jù)源的初始化,然后放到map中,供以后使用。

3.6 Keep Going~

進(jìn)去看一下這個map里邊put的是什么東西。首先從租戶數(shù)據(jù)源配置表中獲取所有的配置,然后對這些數(shù)據(jù)源進(jìn)行一個個的初始化。getDataSouce方法中,也對數(shù)據(jù)源進(jìn)行了一個map的映射,先放到一個容器中,如果初始化過了,直接拿出來使用即可。

3.7 這里才是真正的數(shù)據(jù)源初始化的地方,這里使用了druid,傳統(tǒng)的生成方式而已,沒有什么特別的地方。

3.8 需要注意的是,在系統(tǒng)啟動的時候,需要指定一個默認(rèn)的數(shù)據(jù)源,這個數(shù)據(jù)源中存放著租戶的配置信息。

4. 附贈一張租戶表

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot集成tika實(shí)現(xiàn)word轉(zhuǎn)html的操作代碼

    SpringBoot集成tika實(shí)現(xiàn)word轉(zhuǎn)html的操作代碼

    Tika是一個內(nèi)容分析工具,自帶全面的parser工具類,能解析基本所有常見格式的文件,得到文件的metadata,content等內(nèi)容,返回格式化信息,本文給大家介紹了SpringBoot集成tika實(shí)現(xiàn)word轉(zhuǎn)html的操作,需要的朋友可以參考下
    2024-06-06
  • 全網(wǎng)最詳細(xì)Hutool工具詳解

    全網(wǎng)最詳細(xì)Hutool工具詳解

    Hutool的目標(biāo)是使用一個工具方法代替一段復(fù)雜代碼,從而最大限度的避免“復(fù)制粘貼”代碼的問題,徹底改變我們寫代碼的方式。這篇文章主要介紹了全文最詳細(xì)Hutool工具詳解,需要的朋友可以參考下
    2021-12-12
  • java排序算法之選擇排序詳解

    java排序算法之選擇排序詳解

    這篇文章主要為大家詳細(xì)介紹了java排序算法之選擇排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • redis incr和incrBy的使用說明

    redis incr和incrBy的使用說明

    這篇文章主要介紹了redis incr和incrBy的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java中關(guān)于char類型變量能夠輸出中文的問題

    Java中關(guān)于char類型變量能夠輸出中文的問題

    這篇文章主要介紹了Java中關(guān)于char類型變量能夠輸出中文的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 一文快速了解spring?boot中的@idempotent注解

    一文快速了解spring?boot中的@idempotent注解

    idempotence注解是RESTful API設(shè)計中一個重要的概念,它可以保證操作的可靠性和一致性,下面這篇文章主要給大家介紹了關(guān)于spring?boot中@idempotent注解的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • java字符串日期類Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法

    java字符串日期類Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法

    Java語言的Calendar(日歷),Date(日期),和DateFormat(日期格式)組成了Java標(biāo)準(zhǔn)的一個基本但是非常重要的部分,下面這篇文章主要給大家介紹了關(guān)于java字符串日期類Date和Calendar相互轉(zhuǎn)化及相關(guān)常用方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • 關(guān)于springcloud報錯報UnsatisfiedDependencyException的問題

    關(guān)于springcloud報錯報UnsatisfiedDependencyException的問題

    這篇文章主要介紹了關(guān)于springcloud報錯報UnsatisfiedDependencyException的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • Java反射實(shí)現(xiàn)多屬性去重與分組功能

    Java反射實(shí)現(xiàn)多屬性去重與分組功能

    在Java開發(fā)中,??List是一種非常常用的數(shù)據(jù)結(jié)構(gòu),通常我們會遇到這樣的問題:如何處理??List???中的相同字段?無論是去重還是分組,合理的操作可以提高代碼的性能和可讀性,本文將詳細(xì)介紹如何基于反射的Java集合動態(tài)去重與分組功能,需要的朋友可以參考下
    2025-06-06
  • java反射深入剖析(推薦)

    java反射深入剖析(推薦)

    下面小編就為大家?guī)硪黄猨ava反射深入剖析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07

最新評論

郑州市| 林口县| 郧西县| 桃园市| 衡山县| 陆良县| 麻江县| 维西| 乌海市| 墨玉县| 鸡泽县| 涿州市| 新和县| 常宁市| 兴山县| 义乌市| 长岭县| 洪洞县| 喀什市| 花垣县| 四平市| 客服| 射洪县| 西峡县| 屏边| 黔西县| 武夷山市| 高阳县| 滁州市| 姚安县| 布拖县| 临汾市| 儋州市| 额济纳旗| 区。| 商南县| 东阿县| 九寨沟县| 瑞昌市| 炎陵县| 漳州市|