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(); + } + } +}