若依微服务环境下配置 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 注册、注解切换等步骤,即可快速构建多数据库读写场景,满足复杂业务需求。若需扩展更多数据库类型,也可在此基础上继续添加其他数据源配置。

相关推荐
悄悄敲敲敲2 小时前
MySQL:事务隔离性理解
数据库·mysql
hello 早上好2 小时前
01_ JVM 核心架构详解
jvm·架构
码农三叔2 小时前
(4-2)机械传动系统与关节设计: 减速器与传动机构
人工智能·架构·机器人·人形机器人
u0104058362 小时前
企业微信外部联系人同步的CDC(变更数据捕获)架构与Java实现
java·架构·企业微信
程序猿阿伟2 小时前
《突破训练瓶颈:参数服务器替代架构效率优化指南》
运维·服务器·架构
gjc5922 小时前
MySQL执行计划详解:从看不懂到秒懂,一线DBA的实战笔记
数据库·笔记·mysql·dba
二哈喇子!6 小时前
MySQL数据库概述
mysql
二哈喇子!10 小时前
MySQL命令行导入数据库
数据库·sql·mysql·vs code
Leon Cheng12 小时前
Canvas + DOM 混合渲染架构:高性能文本编辑器的创新方案
架构