这里介绍的是我刚写的一个动态切换数据源的插件的介绍。
这块内容前前后后总共写了三篇
1.
Spring Boot HikariCP 一 ——集成多数据源
2.
Spring Boot 动态切换数据源二——负载均衡
3.
Spring Boot 动态切换数据源三——动态获取配置文件中的配置信息
4.
插件GitHubrhettpang/dynamic-datasource
本项目用来动态切换多个数据源,原则上用户只要引入本项目,在相关配置文件中加入相关数据源的配置即可。目前是对slave数据源进行动态切换。
Spring Boot 1.5.0+
HikariCP 2.5.1 +
配置信息如下
slave:
hosts: slave1,slave2
dynamic:
hikari:
- master:
jdbc-url: jdbc:mysql://master-host:3306/authcenter?useUnicode=true&characterEncoding=utf8&useSSL=true&allowMultiQueries=true&verifyServerCertificate=false
username: root
password: root
pool-name: master
- slave1:
jdbc-url: jdbc:mysql://slave1-host:3306/authcenter?useUnicode=true&characterEncoding=utf8&useSSL=true&allowMultiQueries=true&verifyServerCertificate=false
username: root
password: root
pool-name: slave1
read-only: true
- slave2:
jdbc-url: jdbc:mysql://slave2-host:3306/authcenter?useUnicode=true&characterEncoding=utf8&useSSL=true&allowMultiQueries=true&verifyServerCertificate=false
username:<
这里介绍的是我刚写的一个动态切换数据源的插件的介绍,Git地址rhettpang/dynamic-datasource。简介本项目用来动态切换多个数据源,原则上用户只要引入本项目,在相关配置文件中加入相关数据源的配置即可。目前是对slave数据源进行动态切换。版本依赖Spring Boot 1.5.0+HikariCP 2.5.1 +配置信息如下slave: ho...
spring
boot
-multiple-dataSources
spring
-
boot
多
数据
源
自动
切换
示例项目,利用
spring
aop切面,自动
切换
数据
源
。
CommonServiceImpl是公共处理类,Test1ServiceImpl和Test2ServiceImpl是两个
数据
源
分别的业务处理类。定义为DataSourceAspect类处理切面。
spring
boot
-multiple-dataSources / src / main / resources目录下的database1.sql和database2.sql是2个
数据
源
初始化脚本
IntelliJ IDEA 2016.3.3(或Eclipse)
杰克1.8
Maven的3.3.9
使用的技术
Mybatis
通用mapper(一个非常好用的mybatis
插
件,详细
介绍
见 )
在IDE中查看
源
码并运行
1.在IntelliJ IDEA(推荐使用)
文件->导入项目->选择
spring
boot
-multiple-dataSources文件夹->创建现有资
源
的项目表单-> ...
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-
spring
-
boot
-starter</artifactId>
<version>3.1.1</version>
</dependenc
1、通过切面的方式进行
数据
源
的
切换
;切的是 注解@DataSoure;@Pointcut("@annotation(com.manage.common.annotation.DataSource)"
+ "|| @within(com.manage.common.annotation.DataSource)")
2、然后切面获取当前的方法的注解中所要
切换
的
数据
库
3、设置
数据
源
的变量ThreadLocal<String>CONTEXT_HOLDER.set(dsTy...
import com.baymax.common.enums.ErrorCode;
import com.google.common.collect.Lists;
import com.zhongan.admin.service.ResponseUtils;
import com.zhongan.admin.vo.BaseResponse;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.la.
<dependency>
<groupId>org.mybatis.
spring
.
boot
</groupId>
<artifactId>mybatis-
spring
-
boot
-starter</artifactId>
<version>2.0.1</vers
@Primary
@ConfigurationProperties("
spring
.datasource.primary")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
@Bean
@ConfigurationProperties("
spring
.datasource.secondary")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
@Bean
@Primary
public JdbcTemplate primaryJdbcTemplate(DataSource primaryDataSource) {
return new JdbcTemplate(primaryDataSource);
@Bean
public JdbcTemplate secondaryJdbcTemplate(DataSource secondaryDataSource) {
return new JdbcTemplate(secondaryDataSource);
@Bean
public DataSourceRoutingAspect dataSourceRoutingAspect() {
return new DataSourceRoutingAspect();
这个示例使用了@ConfigurationProperties和@Bean注解来创建两个
数据
源
和两个JdbcTemplate对象。同时,示例代码还使用了一个@Primary注解来指定一个默认的
数据
源
和JdbcTemplate对象。另外,还创建了一个名为"dataSourceRoutingAspect"的切面,用来实现
动态
数据
源
的
切换
。
希望这个示例对你有所帮助!