若依微服务环境下配置 MySQL + 达梦 DM 多数据源

本文将详细介绍在若依微服务架构中如何同时集成 MySQL达梦 DM 数据库,并实现基于注解的动态数据源切换。通过本文的步骤,你可以快速完成多数据源配置并在业务层灵活使用不同数据库。

一、引入数据库驱动依赖

首先,需要在项目根目录的 pom.xml 中加入 MySQL 和达梦 DM 的 JDBC 依赖,以便在运行时正常建立数据库连接。

XML 复制代码
<!-- MySQL 驱动包 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

<!-- 达梦驱动包 -->
<dependency>
    <groupId>com.dameng</groupId>
    <artifactId>Dm7JdbcDriver18</artifactId>
    <version>7.6.0.165</version>
</dependency>

确保依赖加载无误后即可进入数据源配置阶段。

二、配置达梦 DM 数据源

多数据源配置统一维护在 application-druid.yml 文件中。在本示例中,主数据源采用 MySQL,而从数据源使用达梦 DM。

XML 复制代码
spring:
    datasource:
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
# 主库:MySQL
            master:
                url: jdbc:mysql://localhost:3306/yourdb
                username: yourusername
                password: yourpassword
                driverClassName: com.mysql.cj.jdbc.Driver

# 从库:达梦 DM
            slave:
                enabled: true# 是否启用从库
                url: jdbc:dm://localhost:5236/yourdb
                username: yourusername
                password: yourpassword
                driverClassName: dm.jdbc.driver.DmDriver

# 以下为公共数据源参数
            initialSize: 5
            minIdle: 10
            maxActive: 20
            maxWait: 60000

其中 enabled: true 参数至关重要,它控制是否加载达梦从库的数据源。

三、在 DruidConfig 中注册多数据源

数据源需要在框架中注册后才能被动态切换。若依提供了完善的配置方式,只需在 DruidConfig 中添加主库与从库的构建方法即可。

java 复制代码
@Configuration
public class DruidConfig {

    @Bean
    @ConfigurationProperties("spring.datasource.druid.master")
    public DataSource masterDataSource(DruidProperties druidProperties){
        DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
return druidProperties.dataSource(dataSource);
}

    @Bean
    @ConfigurationProperties("spring.datasource.druid.slave")
    @ConditionalOnProperty(prefix ="spring.datasource.druid.slave", name ="enabled", havingValue ="true")
    public DataSource slaveDataSource(DruidProperties druidProperties){
        DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
        return druidProperties.dataSource(dataSource);
    }
}

通过 @ConditionalOnProperty 注解,可以在配置文件中精确控制从库的启用与否,使项目在不同环境下更具灵活性。

四、基于注解实现数据源切换

若依支持使用 @DataSource 注解进行动态数据源切换。如果没有添加该注解,默认会使用主库(MASTER)。当需要从达梦 DM 数据源读取数据时,只需在类或方法上加上:

java 复制代码
@DataSource(value = DataSourceType.SLAVE)

以下展示两种使用方式。

1. 在 Service 类上切换数据源

如果整个 Service 都需要使用达梦数据库,可将注解加在类上:

java 复制代码
@Service
@DataSource(value = DataSourceType.SLAVE)
@Transactional
public class TestServiceImpl implements ITestService
{
    @Autowired
    private TestMapper testMapper;

    @Override
    public User selectAll(){
        return testMapper.selectAll();
    }
}

这样类中所有方法都会默认连接从库。

2. 在指定方法上切换数据源

如果仅个别方法需要访问达梦数据库,则注解直接加在方法上:

java 复制代码
@Service
@Transactional
public class TestServiceImpl implements ITestService
{
    @Autowired
    private TestMapper testMapper;

    @Override
    @DataSource(value = DataSourceType.SLAVE)
    public User selectAll(){
        return testMapper.selectAll();
    }
}

方法注解优先级高于类注解,因此可以对数据源进行更灵活、更精细的控制。

以上即为若依微服务环境中实现 MySQL + 达梦 DM 多数据源 的完整配置过程。通过驱动依赖、数据源配置、Druid 注册、注解切换等步骤,即可快速构建多数据库读写场景,满足复杂业务需求。若需扩展更多数据库类型,也可在此基础上继续添加其他数据源配置。

相关推荐
有梦不弃4 小时前
模块化单体架构设计方案:DDD + 六边形架构落地实践
后端·架构
杨云龙UP4 小时前
MySQL 数据库常用备份工具对比:mysqldump、mydumper 与 XtraBackup
linux·运维·服务器·数据库·mysql·dba·备份恢复
ZENERGY-众壹4 小时前
500个工商业电站压垮数据库?海量光伏时序数据存储的架构取舍
数据库·架构·influxdb·光伏·光伏运维
Dr.kangder6 小时前
嵌入式处理器仿真技术——Hypervisor 原理与实践
服务器·嵌入式硬件·架构·嵌入式
心灵Haven7 小时前
Centos7 + Mysql8.0
mysql·centos
2601_964840279 小时前
技术方案解析:4G 云边协同架构下,智能门禁系统的轻量化升级路径
架构
rhythm-ring9 小时前
《第3篇:BCM的“心脏与神经网络”——UJA1169(SBC)深度解析》
架构·汽车
漫谈数据智理10 小时前
从参考架构到可运行体系如何理解 IDSA 的最新进展
架构·高质量数据集
2601_9637491011 小时前
越华环保集团污水监测云边协同架构:数字化污水治理Modbus-MQTT链路实现方案
人工智能·架构
XR12345678811 小时前
校园网整体架构选型:从核心到接入哪家方案更优?
架构