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

相关推荐
禅思院1 小时前
前端部署“三层漏斗”完全指南:从CI/CD到自动回滚的工程化实战【开题】
前端·架构·前端框架
蝎子莱莱爱打怪3 小时前
XZLL-IM干货系列 04|Netty 长连接实战:Pipeline 怎么排、心跳怎么跳、连接怎么管
后端·微服务·面试
Patrick_Wilson1 天前
幂等到底是什么?从前端视角讲透 SQL、HTTP 与 POST 接口的幂等设计
前端·后端·架构
SamDeepThinking1 天前
Java微服务练习方式
java·后端·微服务
禅思院1 天前
Vite vs Webpack 深度对比:从启动原理到生产构建,一篇就够了
前端·架构·前端框架
Jim6002 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
Cerrda2 天前
开发体验升级:UnoCSS 自定义 SVG 图标热更新方案
架构·前端框架