pigx单个微服务配置双数据源
时间: 2023-07-11 07:10:41 浏览: 55
在Pigx微服务架构中配置双数据源可以通过以下步骤实现:
1. 在pom.xml中添加相关依赖,例如:
```
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis-plus.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${druid.version}</version>
</dependency>
```
2. 在application.yml中配置数据源信息,例如:
```
spring:
datasource:
master:
url: jdbc:mysql://localhost:3306/db1
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
initialSize: 5
minIdle: 5
maxActive: 20
slave:
url: jdbc:mysql://localhost:3306/db2
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
druid:
initialSize: 5
minIdle: 5
maxActive: 20
```
3. 在代码中配置数据源,例如:
```
@Configuration
public class DataSourceConfig {
@Bean(name = "masterDataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.master")
public DataSource masterDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "slaveDataSource")
@ConfigurationProperties(prefix = "spring.datasource.slave")
public DataSource slaveDataSource() {
return DruidDataSourceBuilder.create().build();
}
@Bean(name = "dynamicDataSource")
public DynamicDataSource dynamicDataSource(@Qualifier("masterDataSource") DataSource masterDataSource,
@Qualifier("slaveDataSource") DataSource slaveDataSource) {
Map<Object, Object> targetDataSources = new HashMap<>();
targetDataSources.put(DataSourceNames.MASTER, masterDataSource);
targetDataSources.put(DataSourceNames.SLAVE, slaveDataSource);
return new DynamicDataSource(masterDataSource, targetDataSources);
}
}
```
4. 在代码中使用@DS注解来指定使用的数据源,例如:
```
@DS(DataSourceNames.SLAVE)
public List<User> list() {
return userMapper.selectList(null);
}
```
需要注意的是,在配置数据源时,要确保每个数据源的名称和配置信息都是唯一的,并且要使用@DS注解来指定使用的数据源。同时,需要在代码中定义一个DynamicDataSource类来动态获取数据源。