From d5a9dec0a12e3f24075a9758e0e1e3defad8548e Mon Sep 17 00:00:00 2001 From: dftre <3066417822@qq.com> Date: Wed, 19 Feb 2025 11:19:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E8=B0=83=EF=BC=8Cxa=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=BA=93=E9=85=8D=E7=BD=AE=E6=8A=BD=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/application-druid.yml | 1 + .../framework/datasource/DataSourceCreate.java | 18 ++++++++++++++---- .../datasource/DynamicTransactionManager.java | 2 ++ .../ruoyi/ehcache/config/Ehcache3Config.java | 2 +- .../mybatisplus/config/MybatisPlusConfig.java | 2 -- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml index 6cb5023..b154c59 100644 --- a/ruoyi-admin/src/main/resources/application-druid.yml +++ b/ruoyi-admin/src/main/resources/application-druid.yml @@ -5,6 +5,7 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver dynamic: primary: MASTER + xa: true datasource: # 主库数据源 MASTER: diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceCreate.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceCreate.java index 0c3f86e..498994c 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceCreate.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DataSourceCreate.java @@ -5,15 +5,17 @@ import java.util.Properties; import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.xa.DruidXADataSource; // import com.alibaba.druid.pool.xa.DruidXADataSource; import com.ruoyi.common.service.datasource.CreateDataSource; import com.ruoyi.framework.config.DruidConfig; import com.ruoyi.framework.config.DynamicDataSourceProperties; -@Component +@Configuration public class DataSourceCreate implements CreateDataSource { @Autowired @@ -22,12 +24,20 @@ public class DataSourceCreate implements CreateDataSource { @Autowired private DruidConfig druidConfig; + @Value("${spring.datasource.dynamic.xa}") + private boolean xa; + public DataSource createDataSource(String name, Properties prop) { - // DruidXADataSource dataSource = new DruidXADataSource(); - DruidDataSource dataSource = new DruidDataSource(); + DruidDataSource dataSource = null; + if (xa) { + dataSource = new DruidXADataSource(); + } else { + dataSource = new DruidDataSource(); + } druidConfig.getDruidDataSources().add(dataSource); dataSource.setConnectProperties(prop); properties.setProperties(dataSource, prop); return dataSource; } + } 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 index ba0a2bf..7588839 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicTransactionManager.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicTransactionManager.java @@ -7,8 +7,10 @@ import javax.sql.DataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.support.JdbcTransactionManager; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.EnableTransactionManagement; @Component +@EnableTransactionManagement(proxyTargetClass = true) public class DynamicTransactionManager extends JdbcTransactionManager { @Autowired diff --git a/ruoyi-plugins/ruoyi-ehcache/src/main/java/com/ruoyi/ehcache/config/Ehcache3Config.java b/ruoyi-plugins/ruoyi-ehcache/src/main/java/com/ruoyi/ehcache/config/Ehcache3Config.java index e024a73..aa58738 100644 --- a/ruoyi-plugins/ruoyi-ehcache/src/main/java/com/ruoyi/ehcache/config/Ehcache3Config.java +++ b/ruoyi-plugins/ruoyi-ehcache/src/main/java/com/ruoyi/ehcache/config/Ehcache3Config.java @@ -24,7 +24,7 @@ public class Ehcache3Config { public JCacheCacheManager ehcacheManager() { EhcacheCachingProvider cachingProvider = (EhcacheCachingProvider) Caching.getCachingProvider(); - CacheManager cacheManager = (CacheManager) cachingProvider.getCacheManager(); + CacheManager cacheManager = cachingProvider.getCacheManager(); MutableConfiguration mutableConfiguration = new MutableConfiguration<>(); mutableConfiguration.setTypes(String.class, Object.class); mutableConfiguration.setStoreByValue(false); // 默认值为 true,可根据需求调整 diff --git a/ruoyi-plugins/ruoyi-mybatis-plus/src/main/java/com/ruoyi/mybatisplus/config/MybatisPlusConfig.java b/ruoyi-plugins/ruoyi-mybatis-plus/src/main/java/com/ruoyi/mybatisplus/config/MybatisPlusConfig.java index c944cf3..566bf23 100644 --- a/ruoyi-plugins/ruoyi-mybatis-plus/src/main/java/com/ruoyi/mybatisplus/config/MybatisPlusConfig.java +++ b/ruoyi-plugins/ruoyi-mybatis-plus/src/main/java/com/ruoyi/mybatisplus/config/MybatisPlusConfig.java @@ -10,7 +10,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; import org.springframework.core.io.DefaultResourceLoader; -import org.springframework.transaction.annotation.EnableTransactionManagement; import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.autoconfigure.SpringBootVFS; @@ -30,7 +29,6 @@ import com.ruoyi.common.utils.StringUtils; * * @author ruoyi */ -@EnableTransactionManagement(proxyTargetClass = true) @Configuration public class MybatisPlusConfig { @Bean