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

相关推荐
夏天拐跑了西瓜12 小时前
Eureka注册中心——单机与高可用集群搭建
java·spring cloud·微服务·eureka
mmsx12 小时前
Android 宠物健康服务平台实战:从架构设计到主题换肤完整解析(源码和文档)
android·架构·sqlite·app·源码·宠物
阳明山水12 小时前
销量预测2025—2026:技术演进、实证发现与系统架构的系统性综述
人工智能·深度学习·算法·机器学习·架构
谢文峰12 小时前
当每个 Agent Skill 都在构建记忆层,记忆就已经成为 Runtime 基础设施
架构
人机(未转人工)13 小时前
Flask + MySQL + Ollama(DeepSeek) 漏洞资产库 的网络安全资产分析平台的templates中(chat.html)渲染文件
mysql·flask·html
词却13 小时前
数据库基础:MySQL 安装与基础操作
数据库·mysql
预知同行13 小时前
AI Native 应用缓存架构实战:语义缓存、Prompt 缓存与响应缓存的三层设计
后端·架构
xieliyu.13 小时前
MySQL 进阶笔记:用户 / 会话 / 全局 / 局部变量 + CASE 分支语法
开发语言·数据库·笔记·mysql
预知同行13 小时前
AI 应用的可观测性设计:从 OpenTelemetry GenAI 语义约定到生产级落地架构
架构
TunerT_TQ13 小时前
证据优先:从“我认为”到“我证明”——大模型工程的第一性原理(第1期)
安全·架构