本文将详细介绍在若依微服务架构中如何同时集成 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 注册、注解切换等步骤,即可快速构建多数据库读写场景,满足复杂业务需求。若需扩展更多数据库类型,也可在此基础上继续添加其他数据源配置。