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

相关推荐
程序员侠客行19 分钟前
Mybatis连接池实现及池化模式
java·后端·架构·mybatis
Goat恶霸詹姆斯1 小时前
mysql常用语句
数据库·mysql·oracle
bobuddy2 小时前
射频收发机架构简介
架构·射频工程
桌面运维家2 小时前
vDisk考试环境IO性能怎么优化?VOI架构实战指南
架构
一个骇客4 小时前
让你的数据成为“操作日志”和“模型饲料”:事件溯源、CQRS与DataFrame漫谈
架构
鹏北海-RemHusband4 小时前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
7哥♡ۣۖᝰꫛꫀꪝۣℋ4 小时前
Spring-cloud\Eureka
java·spring·微服务·eureka
洛豳枭薰4 小时前
Innodb一次更新动作
mysql
xcLeigh5 小时前
Python 项目实战:用 Flask 实现 MySQL 数据库增删改查 API
数据库·python·mysql·flask·教程·python3
Fleshy数模6 小时前
MySQL 表创建全攻略:Navicat 图形化与 Xshell 命令行双模式实践
linux·mysql