From e73d02a8531799b2e1ab51a37db91a6271bb3f5c Mon Sep 17 00:00:00 2001 From: Dftre <3066417822@qq.com> Date: Mon, 17 Feb 2025 21:55:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(datasource):=20=E6=B7=BB=E5=8A=A0=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E4=BA=8B=E5=8A=A1=E7=AE=A1=E7=90=86=E5=99=A8=E5=B9=B6?= =?UTF-8?q?=E6=94=AF=E6=8C=81=E8=8E=B7=E5=8F=96=E4=B8=BB=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/DataSourceManagement.java | 4 +++ .../datasource/DynamicTransactionManager.java | 26 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicTransactionManager.java diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceManagement.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceManagement.java index 4c3a181..3c49d68 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceManagement.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceManagement.java @@ -82,6 +82,10 @@ public class DataSourceManagement implements InitializingBean { }); } + public DataSource getPrimaryDataSource(){ + return targetDataSources.get(dataSourceProperties.getPrimary()); + } + public DataSource getDataSource(String name) { return targetDataSources.get(name); } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicTransactionManager.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicTransactionManager.java new file mode 100644 index 0000000..ba0a2bf --- /dev/null +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicTransactionManager.java @@ -0,0 +1,26 @@ +package com.ruoyi.framework.datasource; + +import java.util.Objects; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.support.JdbcTransactionManager; +import org.springframework.stereotype.Component; + +@Component +public class DynamicTransactionManager extends JdbcTransactionManager { + + @Autowired + DataSourceManagement dataSourceManagement; + + @Override + public DataSource getDataSource() { + DataSource dataSource = dataSourceManagement.getDataSource(DynamicDataSourceContextHolder.getDataSourceType()); + if (!Objects.isNull(dataSource)) { + return dataSource; + } else { + return dataSourceManagement.getPrimaryDataSource(); + } + } +}