开源框架springboot-mybatis-wr-separation实现springboot+mybatis读写分离
最近做springboot+mybatis的項(xiàng)目想要用到讀寫(xiě)分離,查了一圈發(fā)現(xiàn)大家都是自己寫(xiě)的,沒(méi)用通用現(xiàn)成的讀寫(xiě)分離架構(gòu),因此就寫(xiě)了一個(gè)比較簡(jiǎn)單好用的小插件,來(lái)幫助大家簡(jiǎn)單的實(shí)現(xiàn)讀寫(xiě)分離的功能,項(xiàng)目已開(kāi)源并已經(jīng)上傳到maven中央倉(cāng)庫(kù),歡迎提出寶貴意見(jiàn),共同改進(jìn)。
springboot-mybatis-wr-separation
介紹
springboot-mybatis-wr-separation 是一個(gè)基于maven的項(xiàng)目,依賴(lài)springboot和mybatis,提供讀寫(xiě)分離的功能的開(kāi)源項(xiàng)目插件
軟件架構(gòu)
1. 使用jdk1.7
2. 依賴(lài)spring-boot-starter-parent(1.5.4.RELEASE)/spring-boot-starter-aop/mybatis-spring-boot-starter(1.3.1)
部署說(shuō)明
1. 直接進(jìn)行jar包依賴(lài)即可
<dependency><groupId>com.gitee.sunchenbin</groupId><artifactId>springboot-mybatis-wr-separation</artifactId><version>0.0.4.RELEASE</version></dependency>2. application.properties中需要做如下配置
? ? ? ? (1) mybatis的配置
mybatis.mapperLocations=classpath:sql-mapper/**/*.xmlmybatis.typeAliasesPackage=com.xxx.api.xxx.model,com.xxx.api.xxx.command? ? ? ? (2) 讀庫(kù)和寫(xiě)庫(kù)的配置? ?
spring.datasource.write.url=jdbc:postgresql://127.0.0.1/db-masterspring.datasource.write.username=rootspring.datasource.write.password=123456spring.datasource.write.driver-class-name=org.postgresql.Driverspring.datasource.read.url=jdbc:postgresql://127.0.0.1/db-slavespring.datasource.read.username=rootspring.datasource.read.password=123456spring.datasource.read.driver-class-name=org.postgresql.Driver? ? ? ??(3) 讀寫(xiě)分離切點(diǎn)的expression表達(dá)式(建議切manager或者service)? ?
wr.separation.pointcut.expression=execution(public * com.xxx..*.*(..))
3. 應(yīng)用插件的springboot項(xiàng)目需要配置掃碼插件的包,即@ComponentScan需要配置對(duì)"com.gitee.sunshine.*"包路徑的掃描
使用說(shuō)明
1.?本插件提供一個(gè)注解,@ReadDB(走讀庫(kù)),如果不打注解默認(rèn)走寫(xiě)庫(kù)
2.?注解適用范圍,必須是spring管理的bean的方法,注解不支持打在接口方法上,通常來(lái)說(shuō)建議在manager層service層的方法上使用
3.?注解生命周期,為了避免讀庫(kù)寫(xiě)庫(kù)來(lái)回切換,產(chǎn)生的事務(wù)問(wèn)題,這里規(guī)定,當(dāng)前線程只會(huì)使用一個(gè)庫(kù)去執(zhí)行操作,比如a.test1()被調(diào)用時(shí),首先a是被spring管理的類(lèi),并且他在我們配置文件“讀寫(xiě)分離切點(diǎn)表達(dá)式”的范圍內(nèi),那么此時(shí),如果test1()打了注解@ReadDB,那么從此開(kāi)始直到這個(gè)線程結(jié)束了,都使用讀庫(kù),如果沒(méi)有打注解,那么從此開(kāi)始知道整個(gè)線程結(jié)束了都使用寫(xiě)庫(kù)。
4.?沒(méi)有被切到的方法如果使用了數(shù)據(jù)庫(kù)操作,默認(rèn)走寫(xiě)庫(kù)
springboot-mybatis-wr-separation插件開(kāi)源地址
碼云地址:https://gitee.com/sunchenbin/springboot-mybatis-wr-separation
代碼下載地址:https://git.oschina.net/sunchenbin/springboot-mybatis-wr-separation.git
總結(jié)
以上是生活随笔為你收集整理的开源框架springboot-mybatis-wr-separation实现springboot+mybatis读写分离的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 经典星号查看器查看密码
- 下一篇: 高三物理教学工作计划