Spring项目进阶实战之数据库读写分离开发(多数据源配置)

来源:互联网 发布:淘宝店铺装修教程视频4 编辑:程序博客网 时间:2024/05/20 13:09
编程技术栈 2017-11-27 18:11:35

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

数据库

随着项目的不断扩展,对数据库访问的压力也再逐渐加大,除了使用缓存来减轻数据库服务压力外,还可以对数据库进行读写分离来提高服务整体负载能力。下面就进入正文,开始介绍如何在Spring项目中使用多数据源来完成对数据库的读写访问。

配置数据源

首先要对Spring的配置文件进行修改,有原来的单数据源配置成两个数据源,具体代码如下图所示,使用parent使用共有配置,分别定义“masterDb”和“slaveDb”两个数据源。

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

配置读写数据源

然后定义一个类(需要继承AbstractRoutingDataSource)来完成对数据源的选择,Class代码如下图所示,然后在Spring的配置文件中进行多数据源的配置。

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

多数据源配置类

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

多数据源配置

有配置文件可以看出,使用“master”和“slave”两个Key值来标记区分两个数据源,并指定默认数据源为“masterDb”,防止未设置数据源的写操作无效。

切换数据源

配置好数据源之后,接下来就开始开发如何切换数据源,首先新增一个注解类@DataSource,用来标记要使用的数据源,该注解类代码如下图所示:

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

注解类

本项目使用ThreadLocal来进行存储切换数据源,新增CustomerContextHolder类,来完成数据源的切换,该类的代码如下图所示:

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

CustomerContextHolder获取数据源

编写好以上两个类之后,然后使用SpringAOP进行Service层代码拦截,在调用Service方法之前切换数据源,具体代码如下图所示,然后在Spring配置文件中加入拦截器的配置。

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

AOP拦截

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

AOP配置

拦截切换代码说明,当请求Service方式时,会分别在当前方法上获取@DataSource注解,如果没有获取到,再在接口的方法上获取,如果还没有获取到就到当前类上获取,最终还是没有获取到就使用自己配置的默认数据源。

使用方式

以上都开发配置完成后,就可以在Service上进行使用了,可以在类中的方法上使用@DataSource("master/slave")来配置使用的数据源,一般在写方法上使用@DataSource("master")在读方法上使用@DataSource("slave")注解,如下代码所示:

Spring项目进阶实战之数据库读写分离开发(多数据源配置)

使用注解选择数据源

至此,本次关于多数据源的配置和切换功能就开发完了,如有不足之处欢迎指正交流,对你有帮助的话记得关注支持~

阅读全文
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 电脑开机卡在logo界面 手机卡在开机画面怎么办 联想笔记本开机卡在lenovo界面 开机卡在正在启动windows iphone卡在开机界面 笔记本开机卡在欢迎界面 电脑开机一直卡在开机画面 电脑开机一直卡在欢迎界面 开机卡在主板界面 dell开机卡在logo 戴尔笔记本开机卡在logo界面 三星手机开机卡在开机画面 手机卡在开机界面 今晚3d开什么号 电脑开机打不开任何软件 电脑开机显示屏没反应 电脑开机一直显示正在启动 电脑开机屏幕没反应 电脑开机显示屏显示无信号 电脑开机后黑屏 电脑开机后不显示桌面 电脑开机后黑屏不显示桌面 电脑开机后打不开任何软件 电脑开机后一直显示正在启动 电视开机后屏幕不亮 电脑开机后蓝屏 电脑开机后显示屏没反应 电脑开机后显示屏显示无信号 海信电视开机后黑屏 开机后黑屏 开机后显示器没反应 笔记本电脑开机后黑屏 电脑待机后怎么开机 笔记本开机后黑屏只有鼠标 笔记本电脑开机后不显示桌面 电脑蓝屏后开机屏幕不亮 电脑开机后桌面没有任何图标 电脑开机后屏幕没反应 电脑关机后自动开机 开机后 ntldrismissing后如何开机