以下是在Druid中配置主从数据源的步骤:
一、引入Druid依赖
1. 在项目的pom.xml(如果是Maven项目)中添加Druid的相关依赖,例如:
- 对于Spring Boot项目使用Druid数据源:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>版本号</version>
</dependency>
二、配置数据源
1. 主配置文件(如application.yml或application.properties)配置
- 在配置文件中,首先定义不同数据源的连接信息。
- 例如,配置两个数据源(一个主数据源和一个从数据源):
- 在application.yml中的配置:
spring:
datasource:
druid:
master:
url: jdbc:mysql://主数据库地址:端口/主数据库名?useUnicode = true&characterEncoding = utf - 8&zeroDateTimeBehavior = convertToNull&useSSL = false&serverTimezone = GMT%2B8
username: 主用户名
password: 主密码
driver - class - name: com.mysql.cj.jdbc.Driver
initial - size: 5
min - idle: 5
max - active: 20
# 其他Druid相关配置如连接池属性等
slave:
url: jdbc:mysql://从数据库地址:端口/从数据库名?useUnicode = true&characterEncoding = utf - 8&zeroDateTimeBehavior = convertToNull&useSSL = false&serverTimezone = GMT%2B8
username: 从用户名
password: 从密码
driver - class - name: com.mysql.cj.jdbc.Driver
initial - size: 3
min - idle: 3
max - active: 15
# 其他Druid相关配置
- 如果是application.properties文件:
spring.datasource.druid.master.url = jdbc:mysql://主数据库地址:端口/主数据库名?useUnicode = true&characterEncoding = utf - 8&zeroDateTimeBehavior = convertToNull&useSSL = false&serverTimezone = GMT+8
spring.datasource.druid.master.username = 主用户名
spring.datasource.druid.master.password = 主密码
spring.datasource.druid.master.driver - class - name = com.mysql.cj.jdbc.Driver
spring.datasource.druid.master.initial - size = 5
spring.datasource.druid.master.min - idle = 5
spring.datasource.druid.master.max - active = 20
spring.datasource.druid.slave.url = jdbc:mysql://从数据库地址:端口/从数据库名?useUnicode = true&characterEncoding = utf - 8&zeroDateTimeBehavior = convertToNull&useSSL = false&serverTimezone = GMT+8
spring.datasource.druid.slave.username = 从用户名
spring.datasource.druid.slave.password = 从密码
spring.datasource.druid.slave.driver - class - name = com.mysql.cj.jdbc.Driver
spring.datasource.druid.slave.initial - size = 3
spring.datasource.druid.slave.min - idle = 3
spring.datasource.druid.slave.max - active = 15
2. Java配置类(可选)
- 如果需要更复杂的配置或者在Java代码中对数据源进行额外的处理,可以创建配置类。
- 例如:
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class DataSourceConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource.druid.master")
public DruidDataSource masterDataSource() {
return new DruidDataSource();
}
@Bean
@ConfigurationProperties(prefix = "spring.datasource.druid.slave")
public DruidDataSource slaveDataSource() {
return new DruidDataSource();
}
}
3. 在业务逻辑中使用数据源
- 在需要使用数据源的地方(如MyBatis的Mapper接口或者Service层),可以通过@Qualifier注解来指定使用哪个数据源。
- 例如在Service层注入数据源:
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
@Qualifier("masterDataSource")
private DataSource masterDataSource;
@Autowired
@Qualifier("slaveDataSource")
private DataSource slaveDataSource;
// 在这里可以使用不同数据源进行数据库操作
}