




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Springboot實(shí)現(xiàn)多數(shù)據(jù)源切換詳情@Bean
@ConditionalOnProperty(prefix="datasource.stragegy",name="routingStategy",havingValue="ROUTING_DS_TABLE_STATEGY")
publicIRoutingInterfaceroutingDsAndTbStrategy(){
returnnewRoutingDsAndTbStrategy();
*Routingdsstrategy
*@returntheroutinginterface
*@since1.0.0
@Bean
@ConditionalOnProperty(prefix="datasource.stragegy",name="routingStategy",havingValue="ROUTGING_DS_STATEGY")
publicIRoutingInterfaceroutingDsStrategy(){
returnnewRoutingDsStrategy();
*Routingtbstrategy
*@returntheroutinginterface
*@since1.0.0
@Bean
@ConditionalOnProperty(prefix="datasource.stragegy",name="routingStategy",havingValue="ROUTGIN_TABLE_STATEGY")
publicIRoutingInterfaceroutingTbStrategy(){
returnnewRoutingTbStrategy();
}
4.3MultipleDataSourceStrategyConfig
根據(jù)對(duì)應(yīng)的配置創(chuàng)建不同的分庫策略
@Configuration
publicclassMultipleDataSourceStrategyConfig{
*當(dāng)配置文件里面包含某個(gè)配置,并且值是多少時(shí)生效
*@returnroutinginterface
*@since1.0.0
@Bean
@ConditionalOnProperty(prefix="datasource.stragegy",name="routingStategy",havingValue="ROUTING_DS_TABLE_STATEGY")
publicIRoutingInterfaceroutingDsAndTbStrategy(){
returnnewRoutingDsAndTbStrategy();
*Routingdsstrategy
*@returntheroutinginterface
*@since1.0.0
@Bean
@ConditionalOnProperty(prefix="datasource.stragegy",name="routingStategy",havingValue="ROUTGING_DS_STATEGY")
publicIRoutingInterfaceroutingDsStrategy(){
returnnewRoutingDsStrategy();
*Routingtbstrategy
*@returntheroutinginterface
*@since1.0.0
@Bean
@ConditionalOnProperty(prefix="datasource.stragegy",name="routingStategy",havingValue="ROUTGIN_TABLE_STATEGY")
publicIRoutingInterfaceroutingTbStrategy(){
returnnewRoutingTbStrategy();
}
4.4MultipleDataSourceConfig
多數(shù)據(jù)源自動(dòng)裝配類,其中創(chuàng)建了多個(gè)數(shù)據(jù)源,通過spring提供的AbstractRoutingDataSource類進(jìn)行數(shù)據(jù)源的切換
@Configuration
//開啟數(shù)據(jù)源以及數(shù)據(jù)分庫策略配置
@EnableConfigurationProperties({MultipleDataSourceProperties.class,MultipleStategyProperties.class})
publicclassMultipleDataSourceConfig{
@Resource
privateMultipleDataSourcePropertiesmultipleDataSourceProperties;
@Resource
privateMultipleStategyPropertiesmultipleStategyProperties;
*配置數(shù)據(jù)源
*@return
@Bean("data0")
publicDataSourcedataSource0(){
DruidDataSourcedruidDataSource=newDruidDataSource();
druidDataSource.setUsername(multipleDataSourceProperties.getData0().getUser());
druidDataSource.setPassword(multipleDataSourceProperties.getData0().getPassword());
druidDataSource.setUrl(multipleDataSourceProperties.getData0().getUrl());
druidDataSource.setDriverClassName(multipleDataSourceProperties.getData0().getDriver());
returndruidDataSource;
@Bean("data1")
publicDataSourcedataSource1(){
DruidDataSourcedruidDataSource=newDruidDataSource();
druidDataSource.setUsername(multipleDataSourceProperties.getData1().getUser());
druidDataSource.setPassword(multipleDataSourceProperties.getData1().getPassword());
druidDataSource.setUrl(multipleDataSourceProperties.getData1().getUrl());
druidDataSource.setDriverClassName(multipleDataSourceProperties.getData1().getDriver());
returndruidDataSource;
*設(shè)置多數(shù)據(jù)源
*@paramdata0
*@paramdata1
*@return
@Bean
publicMultiDataSourcemultiDataSource(DataSourcedata0,DataSourcedata1){
//將多個(gè)數(shù)據(jù)與數(shù)據(jù)源關(guān)聯(lián)起來
MultiDataSourcemultiDataSource=newMultiDataSource();
HashMapObject,ObjectmultiMap=newHashMap();
multiMap.put("data0",data0);
multiMap.put("data1",data1);
//設(shè)置目標(biāo)數(shù)據(jù)源
multiDataSource.setTargetDataSources(multiMap);
//設(shè)置默認(rèn)的數(shù)據(jù)源
multiDataSource.setDefaultTargetDataSource(data0);
//設(shè)置數(shù)據(jù)源名稱的映射
MapInteger,StringmultiMappings=newHashMap();
multiMappings.put(0,"data0");
multiMappings.put(1,"data1");
multipleStategyProperties.setDataSourceKeysMapping(multiMappings);
returnmultiDataSource;
*將多數(shù)據(jù)源設(shè)置進(jìn)mybatis的工廠類中
*@parammultiDataSource
*@return
@Bean
publicSqlSessionFactorysqlSessionFactory(@Qualifier("multiDataSource")MultiDataSourcemultiDataSource)throwsException{
SqlSessionFactoryBeansqlSessionFactoryBean=newSqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(multiDataSource);
sqlSessionFactoryBean.setMapperLocations(newPathMatchingResourcePatternResolver().getResources("classpath:/mybatis/mappers/*.xml"));
sqlSessionFactoryBean.setType
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 駕考試試題大全及答案
- 2025年職業(yè)安全與健康管理考試試題及答案
- 2025年心理咨詢師執(zhí)業(yè)考試題及答案
- 2025年建筑結(jié)構(gòu)工程考試試卷及答案
- 2025年數(shù)據(jù)分析師職業(yè)考試試卷及答案
- 2025年中醫(yī)執(zhí)業(yè)醫(yī)師考試試卷及答案解析
- 2024北京門頭溝六年級(jí)(下)期末英語試題及答案
- 小型塊狀物料自動(dòng)封袋機(jī)設(shè)計(jì)
- 2025版合同副本:【復(fù)件,設(shè)備采購合同】
- 2025關(guān)于無抵押借款合同范本
- 防臺(tái)防汛培訓(xùn)課件教學(xué)
- 新疆維吾爾自治區(qū)體廢物動(dòng)態(tài)信息管理平臺(tái)操作手冊(cè)
- 物流園區(qū)發(fā)展模式-全面剖析
- 中國鐵路青藏集團(tuán)有限公司招聘普通高校真題2024
- XX公司事故隱患內(nèi)部報(bào)告獎(jiǎng)勵(lì)制度1
- 附件6工貿(mào)高風(fēng)險(xiǎn)企業(yè)高危領(lǐng)域較大以上安全風(fēng)險(xiǎn)管控清單
- 國際貿(mào)易公司后勤管理崗位職責(zé)
- 中國礦業(yè)大學(xué)專職輔導(dǎo)員招聘真題2024
- 骨科手術(shù)切口感染的預(yù)防與控制
- 2025年角膜接觸鏡考試題及答案
- 透析營養(yǎng)不良相關(guān)知識(shí)
評(píng)論
0/150
提交評(píng)論