1.由于項(xiàng)目開發(fā)需要?jiǎng)討B(tài)切換多個(gè)數(shù)據(jù)源,查閱了好多博客,也嘗試了多種方法都不是很理想侮穿,因此對(duì)總結(jié)出一套自己的數(shù)據(jù)源切換方法。
?2.項(xiàng)目使用的連接池是阿里的DruidDataSource,直接先上配置信息,注意紅色框的信息耕渴,當(dāng)前為第一個(gè)數(shù)據(jù)源,同理再增加一個(gè)ds_two的數(shù)據(jù)源配置(需要對(duì)應(yīng)修改數(shù)據(jù)庫(kù)或者url連接信息)
3.然后再配置好的對(duì)應(yīng)的數(shù)據(jù)源key值,為后續(xù)切換數(shù)據(jù)源做準(zhǔn)備,其他的配置
4.spring的通用配置邻吞,需要注意的是pojo和mapper掃描時(shí)的包路徑應(yīng)涵蓋其他子項(xiàng)目的包路徑
5.接下來需要寫自己的aop切入方法,用于spring啟動(dòng)時(shí)就進(jìn)入對(duì)應(yīng)的數(shù)據(jù)源掃描方法
6.書寫自己注解類,對(duì)注解進(jìn)行掃描的類组题,完成數(shù)據(jù)源的賦值
7.還需要繼承Spring的AbstractRoutingDataSource,重寫對(duì)應(yīng)的數(shù)據(jù)源路由方法,至此基本完成了數(shù)據(jù)源的動(dòng)態(tài)切換
8.接下來介紹如何使用了抱冷,由于我在DataSource上增加了注解可繼承@Inherited崔列,因此我們只需要在各子項(xiàng)目的Service父類上增加對(duì)應(yīng)的注解,然后再在自己的Service類繼承對(duì)應(yīng)的父類即可完成數(shù)據(jù)源切換旺遮。
9.至此基本可完成對(duì)數(shù)據(jù)源的切換赵讯,詳細(xì)的項(xiàng)目代碼已經(jīng)放到github上,需要的同學(xué)可以去下載,覺得還行的話耿眉,就給個(gè)star吧边翼。
github地址:https://github.com/linzx2015/SSM
git clone地址:https://github.com/linzx2015/SSM.git