From 7f26ecb3abedb7cabcc25588c8c7fd461d9b6d23 Mon Sep 17 00:00:00 2001
From: "Yangkai.Shen" <237497819@qq.com>
Date: Thu, 5 Sep 2019 17:05:19 +0800
Subject: [PATCH] =?UTF-8?q?:sparkles:=20spring-boot-demo-dynamic-datasourc?=
=?UTF-8?q?e=20=E5=AE=8C=E6=88=90?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
spring-boot-demo-dynamic-datasource/README.md | 669 ++++++++++++++++++
.../assets/image-20190905164824155.png | Bin 0 -> 288904 bytes
.../assets/image-20190905165240373.png | Bin 0 -> 145196 bytes
.../assets/image-20190905165323097.png | Bin 0 -> 150178 bytes
.../assets/image-20190905165350355.png | Bin 0 -> 148603 bytes
5 files changed, 669 insertions(+)
create mode 100644 spring-boot-demo-dynamic-datasource/README.md
create mode 100644 spring-boot-demo-dynamic-datasource/assets/image-20190905164824155.png
create mode 100644 spring-boot-demo-dynamic-datasource/assets/image-20190905165240373.png
create mode 100644 spring-boot-demo-dynamic-datasource/assets/image-20190905165323097.png
create mode 100644 spring-boot-demo-dynamic-datasource/assets/image-20190905165350355.png
diff --git a/spring-boot-demo-dynamic-datasource/README.md b/spring-boot-demo-dynamic-datasource/README.md
new file mode 100644
index 0000000..e697230
--- /dev/null
+++ b/spring-boot-demo-dynamic-datasource/README.md
@@ -0,0 +1,669 @@
+# spring-boot-demo-dynamic-datasource
+
+> 此 demo 主要演示了 Spring Boot 项目如何通过接口`动态添加/删除`数据源,添加数据源之后如何`动态切换`数据源,然后使用 mybatis 查询切换后的数据源的数据。
+
+## 1. 环境准备
+
+1. 执行 db 目录下的SQL脚本
+2. 在默认数据源下执行 `init.sql`
+3. 在所有数据源分别执行 `user.sql`
+
+## 2. 主要代码
+
+### 2.1.pom.xml
+
+```xml
+
+
+ 4.0.0
+
+ spring-boot-demo-dynamic-datasource
+ 1.0.0-SNAPSHOT
+ jar
+
+ spring-boot-demo-dynamic-datasource
+ Demo project for Spring Boot
+
+
+ com.xkcoding
+ spring-boot-demo
+ 1.0.0-SNAPSHOT
+
+
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.boot
+ spring-boot-starter-aop
+
+
+
+ tk.mybatis
+ mapper-spring-boot-starter
+ 2.1.5
+
+
+
+ mysql
+ mysql-connector-java
+ runtime
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+ spring-boot-demo-dynamic-datasource
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
+```
+
+### 2.2. 基础配置类
+
+- DatasourceConfiguration.java
+
+> 这个类主要是通过 `DataSourceBuilder` 去构建一个我们自定义的数据源,将其放入 Spring 容器里
+
+```java
+/**
+ *
+ * 数据源配置
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 10:27
+ */
+@Configuration
+public class DatasourceConfiguration {
+
+ @Bean
+ @ConfigurationProperties(prefix = "spring.datasource")
+ public DataSource dataSource() {
+ DataSourceBuilder> dataSourceBuilder = DataSourceBuilder.create();
+ dataSourceBuilder.type(DynamicDataSource.class);
+ return dataSourceBuilder.build();
+ }
+}
+```
+
+- MybatisConfiguration.java
+
+> 这个类主要是将我们上一步构建出来的数据源配置到 Mybatis 的 `SqlSessionFactory` 里
+
+```java
+/**
+ *
+ * mybatis配置
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 16:20
+ */
+@Configuration
+@MapperScan(basePackages = "com.xkcoding.dynamicdatasource.mapper", sqlSessionFactoryRef = "sqlSessionFactory")
+public class MybatisConfiguration {
+ /**
+ * 创建会话工厂。
+ *
+ * @param dataSource 数据源
+ * @return 会话工厂
+ */
+ @Bean(name = "sqlSessionFactory")
+ @SneakyThrows
+ public SqlSessionFactory getSqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) {
+ SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
+ bean.setDataSource(dataSource);
+ return bean.getObject();
+ }
+}
+```
+
+### 2.3. 动态数据源主要逻辑
+
+- DatasourceConfigContextHolder.java
+
+> 该类主要用于绑定当前线程所使用的数据源 id,通过 ThreadLocal 保证同一线程内不可被修改
+
+```java
+/**
+ *
+ * 数据源标识管理
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 14:16
+ */
+public class DatasourceConfigContextHolder {
+ private static final ThreadLocal DATASOURCE_HOLDER = ThreadLocal.withInitial(() -> DatasourceHolder.DEFAULT_ID);
+
+ /**
+ * 设置默认数据源
+ */
+ public static void setDefaultDatasource() {
+ DATASOURCE_HOLDER.remove();
+ setCurrentDatasourceConfig(DatasourceHolder.DEFAULT_ID);
+ }
+
+ /**
+ * 获取当前数据源配置id
+ *
+ * @return 数据源配置id
+ */
+ public static Long getCurrentDatasourceConfig() {
+ return DATASOURCE_HOLDER.get();
+ }
+
+ /**
+ * 设置当前数据源配置id
+ *
+ * @param id 数据源配置id
+ */
+ public static void setCurrentDatasourceConfig(Long id) {
+ DATASOURCE_HOLDER.set(id);
+ }
+
+}
+```
+
+- DynamicDataSource.java
+
+> 该类继承 `com.zaxxer.hikari.HikariDataSource`,主要用于动态切换数据源连接。
+
+```java
+/**
+ *
+ * 动态数据源
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 10:41
+ */
+@Slf4j
+public class DynamicDataSource extends HikariDataSource {
+ @Override
+ public Connection getConnection() throws SQLException {
+ // 获取当前数据源 id
+ Long id = DatasourceConfigContextHolder.getCurrentDatasourceConfig();
+ // 根据当前id获取数据源
+ HikariDataSource datasource = DatasourceHolder.INSTANCE.getDatasource(id);
+
+ if (null == datasource) {
+ datasource = initDatasource(id);
+ }
+
+ return datasource.getConnection();
+ }
+
+ /**
+ * 初始化数据源
+ * @param id 数据源id
+ * @return 数据源
+ */
+ private HikariDataSource initDatasource(Long id) {
+ HikariDataSource dataSource = new HikariDataSource();
+
+ // 判断是否是默认数据源
+ if (DatasourceHolder.DEFAULT_ID.equals(id)) {
+ // 默认数据源根据 application.yml 配置的生成
+ DataSourceProperties properties = SpringUtil.getBean(DataSourceProperties.class);
+ dataSource.setJdbcUrl(properties.getUrl());
+ dataSource.setUsername(properties.getUsername());
+ dataSource.setPassword(properties.getPassword());
+ dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
+ } else {
+ // 不是默认数据源,通过缓存获取对应id的数据源的配置
+ DatasourceConfig datasourceConfig = DatasourceConfigCache.INSTANCE.getConfig(id);
+
+ if (datasourceConfig == null) {
+ throw new RuntimeException("无此数据源");
+ }
+
+ dataSource.setJdbcUrl(datasourceConfig.buildJdbcUrl());
+ dataSource.setUsername(datasourceConfig.getUsername());
+ dataSource.setPassword(datasourceConfig.getPassword());
+ dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
+ }
+ // 将创建的数据源添加到数据源管理器中,绑定当前线程
+ DatasourceHolder.INSTANCE.addDatasource(id, dataSource);
+ return dataSource;
+ }
+}
+```
+
+- DatasourceScheduler.java
+
+> 该类主要用于调度任务
+
+```java
+/**
+ *
+ * 数据源缓存释放调度器
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 14:42
+ */
+public enum DatasourceScheduler {
+ /**
+ * 当前实例
+ */
+ INSTANCE;
+
+ private AtomicInteger cacheTaskNumber = new AtomicInteger(1);
+ private ScheduledExecutorService scheduler;
+
+ DatasourceScheduler() {
+ create();
+ }
+
+ private void create() {
+ this.shutdown();
+ this.scheduler = new ScheduledThreadPoolExecutor(10, r -> new Thread(r, String.format("Datasource-Release-Task-%s", cacheTaskNumber.getAndIncrement())));
+ }
+
+ private void shutdown() {
+ if (null != this.scheduler) {
+ this.scheduler.shutdown();
+ }
+ }
+
+ public void schedule(Runnable task,long delay){
+ this.scheduler.scheduleAtFixedRate(task, delay, delay, TimeUnit.MILLISECONDS);
+ }
+
+}
+```
+
+- DatasourceManager.java
+
+> 该类主要用于管理数据源,记录数据源最后使用时间,同时判断是否长时间未使用,超过一定时间未使用,会被释放连接
+
+```java
+/**
+ *
+ * 数据源管理类
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 14:27
+ */
+public class DatasourceManager {
+ /**
+ * 默认释放时间
+ */
+ private static final Long DEFAULT_RELEASE = 10L;
+
+ /**
+ * 数据源
+ */
+ @Getter
+ private HikariDataSource dataSource;
+
+ /**
+ * 上一次使用时间
+ */
+ private LocalDateTime lastUseTime;
+
+ public DatasourceManager(HikariDataSource dataSource) {
+ this.dataSource = dataSource;
+ this.lastUseTime = LocalDateTime.now();
+ }
+
+ /**
+ * 是否已过期,如果过期则关闭数据源
+ *
+ * @return 是否过期,{@code true} 过期,{@code false} 未过期
+ */
+ public boolean isExpired() {
+ if (LocalDateTime.now().isBefore(this.lastUseTime.plusMinutes(DEFAULT_RELEASE))) {
+ return false;
+ }
+ this.dataSource.close();
+ return true;
+ }
+
+ /**
+ * 刷新上次使用时间
+ */
+ public void refreshTime() {
+ this.lastUseTime = LocalDateTime.now();
+ }
+}
+```
+
+- DatasourceHolder.java
+
+> 该类主要用于管理数据源,同时通过 `DatasourceScheduler` 定时检查数据源是否长时间未使用,超时则释放连接
+
+```java
+/**
+ *
+ * 数据源管理
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 14:23
+ */
+public enum DatasourceHolder {
+ /**
+ * 当前实例
+ */
+ INSTANCE;
+
+ /**
+ * 启动执行,定时5分钟清理一次
+ */
+ DatasourceHolder() {
+ DatasourceScheduler.INSTANCE.schedule(this::clearExpiredDatasource, 5 * 60 * 1000);
+ }
+
+ /**
+ * 默认数据源的id
+ */
+ public static final Long DEFAULT_ID = -1L;
+
+ /**
+ * 管理动态数据源列表。
+ */
+ private static final Map DATASOURCE_CACHE = new ConcurrentHashMap<>();
+
+ /**
+ * 添加动态数据源
+ *
+ * @param id 数据源id
+ * @param dataSource 数据源
+ */
+ public synchronized void addDatasource(Long id, HikariDataSource dataSource) {
+ DatasourceManager datasourceManager = new DatasourceManager(dataSource);
+ DATASOURCE_CACHE.put(id, datasourceManager);
+ }
+
+ /**
+ * 查询动态数据源
+ *
+ * @param id 数据源id
+ * @return 数据源
+ */
+ public synchronized HikariDataSource getDatasource(Long id) {
+ if (DATASOURCE_CACHE.containsKey(id)) {
+ DatasourceManager datasourceManager = DATASOURCE_CACHE.get(id);
+ datasourceManager.refreshTime();
+ return datasourceManager.getDataSource();
+ }
+ return null;
+ }
+
+ /**
+ * 清除超时的数据源
+ */
+ public synchronized void clearExpiredDatasource() {
+ DATASOURCE_CACHE.forEach((k, v) -> {
+ // 排除默认数据源
+ if (!DEFAULT_ID.equals(k)) {
+ if (v.isExpired()) {
+ DATASOURCE_CACHE.remove(k);
+ }
+ }
+ });
+ }
+
+ /**
+ * 清除动态数据源
+ * @param id 数据源id
+ */
+ public synchronized void removeDatasource(Long id) {
+ if (DATASOURCE_CACHE.containsKey(id)) {
+ // 关闭数据源
+ DATASOURCE_CACHE.get(id).getDataSource().close();
+ // 移除缓存
+ DATASOURCE_CACHE.remove(id);
+ }
+ }
+}
+```
+
+- DatasourceConfigCache.java
+
+> 该类主要用于缓存数据源的配置,用户生成数据源时,获取数据源连接参数
+
+```java
+/**
+ *
+ * 数据源配置缓存
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 17:13
+ */
+public enum DatasourceConfigCache {
+ /**
+ * 当前实例
+ */
+ INSTANCE;
+
+ /**
+ * 管理动态数据源列表。
+ */
+ private static final Map CONFIG_CACHE = new ConcurrentHashMap<>();
+
+ /**
+ * 添加数据源配置
+ *
+ * @param id 数据源配置id
+ * @param config 数据源配置
+ */
+ public synchronized void addConfig(Long id, DatasourceConfig config) {
+ CONFIG_CACHE.put(id, config);
+ }
+
+ /**
+ * 查询数据源配置
+ *
+ * @param id 数据源配置id
+ * @return 数据源配置
+ */
+ public synchronized DatasourceConfig getConfig(Long id) {
+ if (CONFIG_CACHE.containsKey(id)) {
+ return CONFIG_CACHE.get(id);
+ }
+ return null;
+ }
+
+ /**
+ * 清除数据源配置
+ */
+ public synchronized void removeConfig(Long id) {
+ CONFIG_CACHE.remove(id);
+ // 同步清除 DatasourceHolder 对应的数据源
+ DatasourceHolder.INSTANCE.removeDatasource(id);
+ }
+}
+```
+
+### 2.4. 启动类
+
+> 启动后,使用默认数据源查询数据源配置列表,将其缓存到 `DatasourceConfigCache` 里,以供后续使用
+
+```java
+/**
+ *
+ * 启动器
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 17:57
+ */
+@SpringBootApplication
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+public class SpringBootDemoDynamicDatasourceApplication implements CommandLineRunner {
+ private final DatasourceConfigMapper configMapper;
+
+ public static void main(String[] args) {
+ SpringApplication.run(SpringBootDemoDynamicDatasourceApplication.class, args);
+ }
+
+ @Override
+ public void run(String... args) {
+ // 设置默认的数据源
+ DatasourceConfigContextHolder.setDefaultDatasource();
+ // 查询所有数据库配置列表
+ List datasourceConfigs = configMapper.selectAll();
+ System.out.println("加载其余数据源配置列表: " + datasourceConfigs);
+ // 将数据库配置加入缓存
+ datasourceConfigs.forEach(config -> DatasourceConfigCache.INSTANCE.addConfig(config.getId(), config));
+ }
+}
+```
+
+### 2.5. 其余代码参考 demo
+
+## 3. 测试
+
+启动项目,可以看到控制台读取到数据库已配置的数据源信息
+
+![image-20190905164824155](assets/image-20190905164824155.png)
+
+通过 PostMan 等工具测试
+
+- 默认数据源查询
+
+![image-20190905165240373](assets/image-20190905165240373.png)
+
+- 根据数据源id为1的数据源查询
+
+![image-20190905165323097](assets/image-20190905165323097.png)
+
+- 根据数据源id为2的数据源查询
+
+![image-20190905165350355](assets/image-20190905165350355.png)
+
+- 可以通过测试数据源的`增加/删除`,再去查询对应数据源的数据
+
+> 删除数据源:
+>
+> - DELETE http://localhost:8080/config/{id}
+>
+> 新增数据源:
+>
+> - POST http://localhost:8080/config
+>
+> - 参数:
+>
+> ```json
+> {
+> "host": "数据库IP",
+> "port": 3306,
+> "username": "用户名",
+> "password": "密码",
+> "database": "数据库"
+> }
+> ```
+
+## 4. 优化
+
+如上测试,我们只需要通过在 header 里传递数据源的参数,即可做到动态切换数据源,怎么做到的呢?
+
+答案就是 `AOP`
+
+```java
+/**
+ *
+ * 数据源选择器切面
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 16:52
+ */
+@Aspect
+@Component
+@RequiredArgsConstructor(onConstructor_ = @Autowired)
+public class DatasourceSelectorAspect {
+ @Pointcut("execution(public * com.xkcoding.dynamic.datasource.controller.*.*(..))")
+ public void datasourcePointcut() {
+ }
+
+ /**
+ * 前置操作,拦截具体请求,获取header里的数据源id,设置线程变量里,用于后续切换数据源
+ */
+ @Before("datasourcePointcut()")
+ public void doBefore(JoinPoint joinPoint) {
+ Signature signature = joinPoint.getSignature();
+ MethodSignature methodSignature = (MethodSignature) signature;
+ Method method = methodSignature.getMethod();
+
+ // 排除不可切换数据源的方法
+ DefaultDatasource annotation = method.getAnnotation(DefaultDatasource.class);
+ if (null != annotation) {
+ DatasourceConfigContextHolder.setDefaultDatasource();
+ } else {
+ RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();
+ ServletRequestAttributes attributes = (ServletRequestAttributes) requestAttributes;
+ HttpServletRequest request = attributes.getRequest();
+ String configIdInHeader = request.getHeader("Datasource-Config-Id");
+ if (StringUtils.hasText(configIdInHeader)) {
+ long configId = Long.parseLong(configIdInHeader);
+ DatasourceConfigContextHolder.setCurrentDatasourceConfig(configId);
+ } else {
+ DatasourceConfigContextHolder.setDefaultDatasource();
+ }
+ }
+ }
+
+ /**
+ * 后置操作,设置回默认的数据源id
+ */
+ @AfterReturning("datasourcePointcut()")
+ public void doAfter() {
+ DatasourceConfigContextHolder.setDefaultDatasource();
+ }
+
+}
+```
+
+此时需要考虑,我们是否每个方法都允许用户去切换数据源呢?答案肯定是不行的,所以我们定义了一个注解去标识,当前方法仅可以使用默认数据源。
+
+```java
+/**
+ *
+ * 用户标识仅可以使用默认数据源
+ *
+ *
+ * @author yangkai.shen
+ * @date Created in 2019/9/4 17:37
+ */
+@Target({ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+@Documented
+public @interface DefaultDatasource {
+}
+```
+
+完结,撒花✿✿ヽ(°▽°)ノ✿
\ No newline at end of file
diff --git a/spring-boot-demo-dynamic-datasource/assets/image-20190905164824155.png b/spring-boot-demo-dynamic-datasource/assets/image-20190905164824155.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8a18f248052eca8996131838559cafc35c22212
GIT binary patch
literal 288904
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
z