多數據源(Springboot)

多數據源

1、多數據源認識及原理
        一個項目裏,同時可以訪問多個不同的數據庫
實現原理
        單個數據源在配置時會綁定一套mybatis配置,多個數據源時,不同的數據源綁定不同的mybatis配置就可以了,簡單的思路就是讓不同的數據源掃描不同的包,讓不同的包下的mapper對應連接不同的數據源去處理邏輯。
2、關鍵類:
        ThreadLocal:線程局部變量,所謂線程局部變量,就是僅僅只能被本線程訪問,不能在線程之間進行共享訪問的變量
        AbstractRoutingDataSource:getConnection()根據查找lookup key鍵對不同目標源的調用,通常是通過(但不一定)某些線程綁定的事務上下文來實現
2、實現多數據源步驟:
步驟1:在Springboot中,增加多數據的配置
步驟2:擴展Spring的AbstractRoutingDataSource抽象類,AbstractRoutingDataSource中的抽象方法determineCurrentLookupKey是實現多數據源的核心,並對該方法進行Override;決定數據源是哪個
步驟3:配置DataSource,指定數據源的信息
步驟4:通過註解,實現多數據源
步驟5:配置加上(exclude={DataSourceAutoConfiguration.class)
延伸:
兩個數據源配置的差別,也是支持多數據源的關鍵

  • Configuration 掃描不同的前綴,取不同包下的sql對應的xml文件
  • SqlSessionFactoryBean 實例化時,默認的額外添加了 @Primary註解
  • MapperScan 掃描的不同的包,如果掃描相同的包也能做,但是還需要做額外的配置,可以自己嘗試
  • 不同的數據源使用不同的SqlSessionFactoryBean實例
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章