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